将值附加到 JavaScript 字典
Append values to javascript dictionary
本文关键字:JavaScript 字典 更新时间:2023-09-26
我正在尝试在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}, {"key": "foo", "val": 77]
如何生成所需的数据结构?以下代码似乎没有将值追加到值数组。
var d = {}
for (var i in input) {
var datum = input[i];
d[datum.key] = datum.val
}
for (var i = 0; i < input.length; i++) {
var datum = input[i];
if (!d[datum.key]) {
d[datum.key] = [];
}
d[datum.key].push(datum.val);
}
仅供参考,您不应该使用 for (var i in input)
来迭代数组。
另一种选择:
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 }]
const dict = {}
input.forEach(({ key, val }) =>
key in dict ? dict[key].push(val) : dict[key] = [val] )
console.log(dict);
和一行,具有不变性
input.reduce((dict, { key, val }) => ({ ...dict, [key]: [...dict[key] || [], val] }), {})
另一种方式,用reduce
.
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);
}
你会有1个以上的键吗?好吧,我认为你想要一些类似的东西,比如将JSON转换为ArrayString。
检查此 将 JSON 转换为数组 Javascript以及这个如何将 JSON 对象转换为 JavaScript 数组
等
请尝试以下操作:
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 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);
相关文章:
- javascript结合了数组和字典
- 将JavaScript字典转换为JSON格式
- 为什么可以't使用myDict.123语法的JavaScript字典键以数字开头
- 如何在javascript字典中使用关键字查找值
- "尝试传递到 Jinja2/JavaScript 字典时出现
- 将值附加到 JavaScript 字典
- javascript 字典的键不是存储为值,而是存储为变量名称
- 如何在 JavaScript 字典中获取键集合
- JavaScript - 字典为空
- Javascript 字典到 html 数据字符串
- 为什么jQuery.getJSON()会使我的javascript字典扁平化
- Typescript字典编码的有效Javascript字典函数到类
- 当我在jQuery应用程序中迭代javascript字典的键时,我得到的是数字而不是值
- 将字符串转换为javascript字典
- 如何将JavaScript字典转换为Python语法
- 如何将javascript字典转换为编码的url字符串
- 将Javascript字典转换为python字典
- 带有名称的JavaScript字典
- 键作为变量访问javascript字典
- 如何构建javaScript字典