【发布时间】:2018-02-27 07:28:07
【问题描述】:
原来的代码是这样的......
selectedProducts = {
10529814:false,
10813521:true
};
this.selectedProducts.forEach((selected, value) => {
if(selected) {
this.discussionMessage.productIds.push(value);
}
});
我想用过滤器/映射技术重写它,这就是我现在所拥有的。
this.discussionMessage.productIds = this.selectedProducts.filter((selected, value) => selected)
.map((product) => product);
但无论我进行什么更改,我似乎都无法最终得到一个仅包含匹配值为 true 的产品 ID 的列表。
【问题讨论】:
-
您需要过滤器和映射(如您在标题中所述)而不仅仅是过滤器
-
您的数组无效。每个条目是对象还是字符串?
-
您的
selectedProducts数组不正确(除非它是 lamda 语法)。它需要是对象数组。类似[{10529814: false}, {10813521:true}] -
this.selectedProducts.map((selected, value) => selected ? value : undefined).filter(value => value !== undefined); -
…或者实际上你需要映射然后过滤。请注意,
value实际上是一个索引。
标签: javascript arrays lambda ecmascript-6