繁体   English   中英

将两个 arrays 组合成键值对,如果键已经存在,则添加值

[英]Combine two arrays into key-value pairs and add values if key already exists

我有两个 arrays(a 和 b),我想将它们组合成一个带有键值对的数组(obj)。 我怎样才能做到,如果 obj 不包含键,则将该键和相应的值添加到 obj,但是如果 obj 已经具有该键,则将重复键的值添加到原始键值?

var a = ["red", "green", "red", "blue"]
var b = [2, 4, 3, 1]

desired obj = {["red", 5], ["green", 4], ["blue", 1]}

我知道键在数组中必须是唯一的,所以如果我像下面这样直接组合两个 arrays,重复键将消失,但我不确定如何处理重复键的值并将同一键的所有值加在一起.

var obj = {};
for (var i=0; i<a.length; i++) {
    obj[a[i]] = b[i]
}

您需要检查 object 中是否已存在密钥,以免覆盖先前的值

 var a = ["red", "green", "red", "blue"] var b = [2, 4, 3, 1] var obj = {}; for (var i=0; i<a.length; i++) { // if it doesn't exist assign value 0 to it, otherwise use existing value obj[a[i]] = obj[a[i]] || 0; // then add the new value obj[a[i]] += b[i]; } console.log(obj)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM