我有一个简单的数组:
const arr = [
{
"id": 2,
"color": "red"
},
{
"id": 1,
"color": "blue"
},
{
"id": 2,
"color": "yellow"
},
];
我想创建一个散列Map,在其中为该键添加新颜色。
例如,我想在id: 3
上添加color: green
现在,您可以看到没有id: 3
现在我在这里期待:
{
2: [{color: "red"}]
1: [{color: "blue"}, {color: "yellow"}],
3: [{color: "green"}]
}
现在如果我想在id: 2
上添加color: brown
在这种情况下,我期待:
{
2: [{color: "red"}, {color: "brown"}]
1: [{color: "blue"}, {color: "yellow"}],
3: [{color: "green"}]
}
我已经创建了一个Playground:
const arr = [
{
"id": 2,
"color": "red"
},
{
"id": 1,
"color": "blue"
},
{
"id": 2,
"color": "yellow"
},
];
function addItem(id: number, colors: any) {
let newArr = {[id]: colors};
arr.forEach(function (obj) {
newArr[obj.id].push({id: obj.color});
});
return newArr;
}
console.log(addItem(3, [{color: "green"}]))
console.log(addItem(1, [{color: "brown"}]))
这里我也想避免重复
5条答案
按热度按时间moiiocjp1#
基本上,它将遍历数组,如果它的id匹配,它将添加您的颜色。
dnph8jn42#
下面的代码可以帮助您解决这个问题
ktecyv1j3#
u0sqgete4#
您可能会发现a class在封装数据时非常有用。
1.在初始化时,传入对象数组,并将其转换为带有数组值的a Map。(注意:您可以在此处使用对象作为替代)。
1.创建一个方法,如果新颜色不存在,则将其添加到相应的贴图数组中(即测试重复项)。
其他文件
reduce
r55awzrz5#