gpt4 book ai didi

javascript - 在javascript中通过另一个数组更改对象数组的值的更好方法

转载 作者:行者123 更新时间:2023-12-01 00:56:08 26 4
gpt4 key购买 nike

我有

var a = ["4", "2"],
b = [{"item": "1"}, {"item": "4"}, {"item": "2"}, {"item": "3"}];

现在我需要找到每个 a 的值和 b 的值,如果我找到匹配的值则需要创建

c=[{"item": false}, {"item": true}, {"item": true}, {"item": false}]

我有上面的jsfiddle example此处但数组顺序已更改。结果应该像上面的“c”数组一样,并且还需要减少过滤方法和映射的数量。

最佳答案

let a = ["4", "2"];
let b = [{"item": "1"}, {"item": "4"}, {"item": "2"}, {"item": "3"}];
const trueValues = new Set(a);
let c = b.map(obj => ({"item": trueValues.has(obj["item"])}));

这会导致:

[{"item": false}, {"item": true}, {"item": true}, {"item": false}]

IE11将不支持new Set(item1),您将需要:

const trueValues = new Set()
a.forEach(item => trueValues.add(item))

您的代码结果为

[{"item": true}, {"item": true}, {"item": false}, {"item": false}]

因为你采用所有 true,然后添加所有 false:

[...newItem, ...addOtherItems]

如果你想将一个数组映射到另一个数组,你应该按原样使用map

对于 IE9,您可以像这样使用:

b.map(b_i => ({item: a.some(a_i => a_i === b_i.item)}));

关于javascript - 在javascript中通过另一个数组更改对象数组的值的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com