【发布时间】:2019-09-30 13:28:37
【问题描述】:
我有一个对象数组。 我需要将其转换为对象的对象。在尝试这样做时,我需要为每个对象调用另一个函数。
你能帮我解决这个问题吗?
代码:
function convertData() {
var arr = {"items": [ {"type": "color"}, {"type": "number" }]};
arr.items.reduce(function(item, index) {
return {
/*for each obj in items call formatItems before assigning it here */
item: formatItems(item)
}
});
console.log(arr);
}
function formatItems(item, index) {
return {
type: "string",
id: "item-"+index
}
}
<button onclick="convertData()">Click me!</button>
预期输出:
{
"0": {
"type": "string",
"id": "item-1"
},
"1": {
"type": "string",
"id": "item-2"
}
}
【问题讨论】:
-
预期输出错误。您在寻找对象数组吗?
-
您的预期输出无效,它使用对象表示法,但没有属性名称(在外部对象中)。真正想要的输出是什么?
-
"我需要将其转换为对象的对象" 那会是对象的数组吗?还是一个包含属性并且每个都是对象的对象?如果是后者,那么它们的键应该是什么?
-
关于您的编辑:这仍然无效。您有一个键与与之关联的对象,但第二个键不正确。这些应该在一个数组中还是你期望两个键?
-
顺便说一句,使用带有序列号的动态
id属性可能是代码异味。最好知道为什么你需要这个。
标签: javascript arrays object iterator reduce