gpt4 book ai didi

javascript - 将对象值映射到键 - Javascript

转载 作者:行者123 更新时间:2023-11-30 09:19:01 25 4
gpt4 key购买 nike

我有一个来自 API 调用的数组。

var response = {
"data": {
"data": [{
"1": "Arun",
"index": "name"
}, {
"1": 70.78,
"index": "score"
}]
}
}

我连接到许多其他 API,它们返回给我类似的响应,但 key 发生了变化。有时可能是

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>

那么除了在映射函数中硬编码“1”或“值”之外,是否有更通用的方法来获取 key 并获得相同的结果?

谢谢。

最佳答案

使用 reduce 而不是 map,因此您更新的是同一对象,而不是创建数组。

并且由于包含该值的属性可能会有所不同,我使用一个循环来查找第一个未命名为 index 的属性,并使用它的值。

var response = {
"data": {
"data": [{
"1": "Arun",
"index": "name"
}, {
"1": 70.78,
"index": "score"
}]
}
}

const mappedData = response.data.data.reduce((acc, item) => {
var value;
// find the property that isn't named "item"
for (var i in item) {
if (i != "index") {
value = item[i];
break;
}
}
acc[item.index] = value;
return acc;
}, {});

console.log(mappedData)

不需要 lodash,内置的 reduce 函数就可以了(但是 _.reduce 的工作方式类似)。

关于javascript - 将对象值映射到键 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53071849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com