首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在javascript中使用另一个数组来更改对象值的数组,哪种方法更好

在javascript中使用另一个数组来更改对象值的数组,哪种方法更好
EN

Stack Overflow用户
提问于 2019-06-13 03:07:04
回答 2查看 46关注 0票数 0

我有过

代码语言:javascript
复制
var a = ["4", "2"],
b = [{"item": "1"}, {"item": "4"}, {"item": "2"}, {"item": "3"}];

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

代码语言:javascript
复制
c=[{"item": false}, {"item": true}, {"item": true}, {"item": false}]

我在这里用jsfiddle处理了上面的example,但是数组顺序被改变了。结果应该像上面的"c“数组一样,还需要减少过滤方法和映射的数量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 03:17:30

代码语言:javascript
复制
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"])}));

这将导致:

代码语言:javascript
复制
[{"item": false}, {"item": true}, {"item": true}, {"item": false}]

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

代码语言:javascript
复制
const trueValues = new Set()
a.forEach(item => trueValues.add(item))

您的代码结果是

代码语言:javascript
复制
[{"item": true}, {"item": true}, {"item": false}, {"item": false}]

因为你得到了所有的真,然后加上了所有的假:

代码语言:javascript
复制
[...newItem, ...addOtherItems]

如果您想将一个数组映射到另一个数组,您应该直接使用map

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

代码语言:javascript
复制
b.map(b_i => ({item: a.some(a_i => a_i === b_i.item)}));
票数 2
EN

Stack Overflow用户

发布于 2019-06-13 03:27:29

非常简单的代码是:

代码语言:javascript
复制
const a = ["4", "2"]
const b = [{"item": "1"}, {"item": "4"}, {"item": "2"}, {"item": "3"}]

console .log (
  b .map ( ({item}) => ({ item: a . includes (item) }) )
)

如果您有大量的数据,这可能不能很好地执行,您可能会使用Set查看一个版本。但我只关心测试是否显示出性能问题,因为这段代码很简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档