以下是我的代码......
var temp = {};
[{group_id : "1111"}, {group_id: "2222"}].map(function(ele, index) {
var group_id = ele.group_id;
temp.group_id = {value: 0}
});
运行此代码后,临时对象为
{group_id : {value : 0}
但我想要的是
{ {"1111" : {value : 0}}, {"2222" : {value : 0}} }
我该怎么做?
答案 0 :(得分:1)
而不是使用temp.group_id
使用temp[group_id]
。
答案 1 :(得分:0)
但我想要的是
{ {"1111" : {value : 0}}, {"2222" : {value : 0}} }
您可以利用数组存储结果为
的对象[
{
"1111": {
"value": 0
}
},
{
"2222": {
"value": 0
}
}
]
var obj = [{group_id : "1111"}, {group_id: "2222"}];
var res = obj.map(o => ({[o.group_id]:{value:0}}));
答案 2 :(得分:0)
由于您当前指出的预期结果不是有效的JSON结构。
相反,我正在根据您的预期结果的假设来编写我的解决方案:
{ "1111" : {value : 0}, "2222" : {value : 0} }
由于最终结果是一个对象,因此使用map
将不合适,因为它返回一个数组。所以我的解决方案基于reduce
API。
function initObject(obj, currElement) {
obj[currElement.group_id] = { value: 0 };
return obj;
}
console.log([{group_id : "1111"}, {group_id: "2222"}].reduce(initObject, {}));

答案 3 :(得分:0)
您可以使用reduce Fn将数组减少为对象。作为 期望您的输出不是有效的JSON,有效的结果 可以获得的JSON结构如下。请修改您的问题 对于有效的结果集,如果不是这种情况。
var temp = [{group_id : "1111"}, {group_id: "2222"}].reduce(function(obj, key) {
obj[key.group_id] = {value: 0};
return obj;
} , {});
console.log(temp);

答案 4 :(得分:0)
你的地图功能很好,虽然你想要实现的对象结构有点不对。
在一个对象中,值作为键值对存在,因此必须有一个针对temp
对象的键。或者你可以将所有内容都包含在一个数组中。
SO
var temp = {};
[{group_id : "1111"}, {group_id: "2222"}]
.map(function(ele) {
var group_id = ele.group_id;
temp[group_id] = {value: 0}
});

temp
作为
{"1111":{value: 0}, "2222":{value: 0}}
对于数组,您的代码可以如下所示:
var temp = [];
[{group_id : "1111"}, {group_id: "2222"}]
.map(function(ele) {
var obj = {};
obj[ele.group_id] = {value: 0}
temp.push(obj)
});

这将为您提供temp
[{"1111":{value: 0}}, {"2222": {value: 0}}]
你可以使用其中任何一个,两者都很好,但取决于你以后在代码中使用temp
的方式。