我调用的API给出如下结果:
{
"name1" : "value1",
"name2" : "value2",
"name3" : "value3",
"name4" : "value4",
}
我想更改将其转换为
[
{"name1" : "value1"},
{"name2" : "value2"},
{"name3" : "value3"},
{"name4" : "value4"},
[
我尝试使用
Object.keys(result).forEach(function(key) {
console.log(key, result[key]);
let item = key;
policyStatusList.push(
new Object({
item: result[key]
})
);
});
但最终还是
[
{"item" : "value1"},
{"item" : "value2"},
{"item" : "value3"},
{"item" : "value4"},
[
有什么建议吗?
答案 0 :(得分:7)
.map
对象的Object.entries
:
const obj = { "name1" : "value1", "name2" : "value2", "name3" : "value3", "name4" : "value4" };
const arrOfObjs = Object.entries(obj).map(([key, val]) => ({ [key]: val }));
console.log(arrOfObjs);
答案 1 :(得分:2)
您可以使用reduce
和concat
方法。
var obj = { "name1" : "value1", "name2" : "value2", "name3" : "value3", "name4" : "value4" }
var res = Object.keys(obj).reduce((result, item) => result.concat([{[item] : obj[item]}]), []);
console.log(res);
答案 2 :(得分:1)
我想更改将其转换为...
不,您可能不需要。 API返回的数据结构很棒,因为
1)您可以轻松获取某个键的值,例如obj.name1
2)您可以轻松地获取所有键(Object.keys(obj)
),值(Object.values(obj)
)和键值对(Object.entries(obj)
)进行迭代。
凭借“想要”获得的数据结构,您将无法:
1)查找一个值,因为您必须迭代数组并在每个对象中搜索键,这确实很慢而且很丑。
2)遍历键,值和键-值对,因为您必须从每个对象中提取键和值,这很复杂。
所以不,你不想那样。
答案 3 :(得分:0)
尝试:
const obj = {
"name1" : "value1",
"name2" : "value2",
"name3" : "value3",
"name4" : "value4"
};
const convertedArray = Object.entries(obj).map(([key, val]) => ({
[key]: val
}));
console.log(convertedArray);
答案 4 :(得分:0)
您的问题是您正在使用键item
创建新对象-您想使用键[item]
(名为item
的变量的值,而不是文字字符串) item
):
const result = {
"name1" : "value1",
"name2" : "value2",
"name3" : "value3",
"name4" : "value4"
};
let policyStatusList = [];
Object.keys(result).forEach(function(key) {
let item = key;
policyStatusList.push(
new Object({
[key]: result[key]
})
);
});
console.log(policyStatusList);