【发布时间】:2018-10-30 19:46:51
【问题描述】:
我有一个来自 API 调用的数组。
var response = {
"data": {
"data": [{
"1": "Arun",
"index": "name"
}, {
"1": 70.78,
"index": "score"
}]
}
}
我连接到许多其他 API,它们返回了类似的响应,但密钥发生了变化。有时可能是
var response = {
"data": {
"data": [{
"values": "Harry",
"index": "name"
}, {
"values": 45,
"index": "score"
}]
}
}
var response = {
"data": {
"data": [{
"4": "Richard",
"index": "name"
}, {
"4": 98,
"index": "score"
}]
}
}
我想要一个这样的数组。
[
{
name: 'Arun',
score: 70.78
}
]
这就是我所做的。
var response = {
"data": {
"data": [{
"1": "Arun",
"index": "name"
}, {
"1": 70.78,
"index": "score"
}]
}
}
const result = [];
const mappedData = _.map(response.data.data, (item) => {
return {
[item.index]: item[1]
};
});
const resultObject = _.reduce(mappedData, (result, currentObject) => {
for (const key in currentObject) {
if (currentObject.hasOwnProperty(key)) {
result[key] = currentObject[key];
}
}
return result;
}, {});
result.push(resultObject)
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
那么除了在 map 函数中硬编码“1”或“values”之外,有没有更通用的方法来获取键并达到相同的结果?
谢谢。
【问题讨论】:
标签: javascript arrays lodash javascript-objects