将值附加到javascript字典
我试图用javascript创建以下数据结构:将值附加到javascript字典,javascript,Javascript,我试图用javascript创建以下数据结构: d = {"foo": [3, 77, 100], "bar": [10], "baz": [99], "biff": [10]} 我的起始数据结构是一个字典列表: input = [{"key": "foo", "val": 3}, {"key": "bar", "val": 10}, {"key": "foo", "val": 100}, {"key": "baz", "val": 99}, {"key": "biff", "val": 10
d = {"foo": [3, 77, 100], "bar": [10], "baz": [99], "biff": [10]}
我的起始数据结构是一个字典列表:
input = [{"key": "foo", "val": 3}, {"key": "bar", "val": 10}, {"key": "foo", "val": 100}, {"key": "baz", "val": 99}, {"key": "biff", "val": 10}, {"key": "foo", "val": 77]
如何生成所需的数据结构?下面的代码似乎没有将值附加到值数组中
var d = {}
for (var i in input) {
var datum = input[i];
d[datum.key] = datum.val
}
for(变量i=0;i
仅供参考,您不应该使用
for(输入中的var i)
来迭代数组。您将拥有多于1个键?
嗯,我想您需要类似于将JSON转换为ArrayString的东西
检查这个
还有这个
etc请尝试以下操作:
var input = [{ "key": "foo", "val": 3 }, { "key": "bar", "val": 10 }, { "key": "foo", "val": 100 }, { "key": "baz", "val": 99 }, { "key": "biff", "val": 10 }, { "key": "foo", "val": 77 }];
var d = {};
for (var i = 0; i < input.length; i++) {
var entry = input[i];
if (d[entry.key] === undefined) d[entry.key] = [];
d[entry.key].push(entry.val);
}
alert(JSON.stringify(d));
var-input=[{“key”:“foo”,“val”:3},{“key”:“bar”,“val”:10},{“key”:“foo”,“val”:100},{“key”:“baz”,“val”:99},{“key”:“biff”,“val”:10},{“key”:“foo”,“val”:77}];
var d={};
对于(变量i=0;i另一种方法,使用减少
var d = input.reduce(function (res, item) {
var key = item.key;
if (!res[key]) res[key] = [item.val];
else res[key].push(item.val);
return res;
}, {});
你应该做下一步:
for (var i in input){
var datuml = input[i];
if(!d[datuml.key]){
d[datuml.key]=[];
}
d[datuml.key].push(datuml.val);
}
另一种选择:
const input=[{“key”:“foo”,“val”:3},{“key”:“bar”,“val”:10},{“key”:“foo”,“val”:100},{“key”:“baz”,“val”:99},{“key”:“biff”,“val”:10},{“key”:“foo”,“val”:77}]
常量dict={}
input.forEach(({key,val})=>
输入dict?输入dict[key]。按下(val):输入dict[key]=[val])
控制台日志(dict)代码>跳数是多少?你的意思是不是var-datum=input[i]代码>?注意不要使用for..在
for数组中:迭代输入
,查看d
是否为“key”
的每个值都有一个属性,如果没有,则使用该值为d
提供一个属性,并分配一个数组。然后将“val”
的值推入数组。啊,谢谢。我的错,打字错误。JavaScript“字典”称为对象。仅供参考。你比我快一点。同样准确的答案:)对于新手来说可能不是最清晰的,但我喜欢:)@user1523882,是的,可能不是,但我真的喜欢利用reduce函数的initialValue
来构建这样的映射。一旦你习惯了它,它就很好了,因为你可以在一个外部语句中完成它。多好的解决方案啊。谢谢你的帮助
var result = {}
input.forEach(function(keyObject){
//Make array for key if doesn't exist
result[keyObject.key] = result[keyObject.key] ? result[keyObject.key] : [];
//Add value to array
result[keyObject.key].push(keyObject.val);
});
console.log(result);
for (var i in input){
var datuml = input[i];
if(!d[datuml.key]){
d[datuml.key]=[];
}
d[datuml.key].push(datuml.val);
}