Javascript 在es6中使用map筛选并返回新对象
我有以下代码:Javascript 在es6中使用map筛选并返回新对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下代码: allDesignDocs.rows.forEach((row: any) => { if (!designDocsName.includes(row.id.replace("_design/", ""))) { toBeRemoved = [{ _id: row.id, _rev: row.value.rev, "_deleted": true }, ...toBeRemoved]; } });
allDesignDocs.rows.forEach((row: any) => {
if (!designDocsName.includes(row.id.replace("_design/", ""))) {
toBeRemoved = [{ _id: row.id, _rev: row.value.rev, "_deleted": true }, ...toBeRemoved];
}
});
这很好用。但是,我希望使用就地更新方法。所以我选择了map而不是foreach:
var test = allDesignDocs.rows.map((row: any) => {
if (!designDocsName.includes(row.id.replace("_design/", ""))) {
return { _id: row.id, _rev: row.value.rev, "_deleted": true };
}
});
因此,当条件不满足时,上面返回的数组包括未定义的数组。我只希望数组包含从if内部返回的值,并忽略所有未定义的值。我知道我可以循环尝试结果并清理它,但这不是一种干净的方式。是否有任何es6功能可以提供上述功能?您可以使用
.reduce
例如:
[1,2,3,4].reduce((acc,n)=>{
if (n % 2 == 0) {
acc.push(n*4)
}
return acc;
},[])
这将产生一个偶数*4的列表,或者组合
.filter
和.map
您可以使用.reduce
例如:
[1,2,3,4].reduce((acc,n)=>{
if (n % 2 == 0) {
acc.push(n*4)
}
return acc;
},[])
它将生成偶数*4的列表,或者组合.filter
和.map
使用after来过滤未定义的值
var test = allDesignDocs.rows.map((row: any) => {
if (!designDocsName.includes(row.id.replace("_design/", ""))) {
return { _id: row.id, _rev: row.value.rev, "_deleted": true };
}
}).filter(item => item !== undefined); // Can also use filter(item => item);
或使用:
使用after可过滤未定义的值
var test = allDesignDocs.rows.map((row: any) => {
if (!designDocsName.includes(row.id.replace("_design/", ""))) {
return { _id: row.id, _rev: row.value.rev, "_deleted": true };
}
}).filter(item => item !== undefined); // Can also use filter(item => item);
或使用:
.map
将对数组进行1:1转换。如果您只想返回部分项目,则需要.filter
@VLAZ Yes,但使用filter将返回提供给它的确切行,但是我有一个转换,并返回一个自定义对象:{u id:row.id,_rev:row.value.rev,“_deleted”:true}.filter().map()
.map
将对数组进行1:1转换。如果您只想返回部分项目,则需要.filter
@VLAZ Yes,但使用filter将返回提供给它的确切行,但是我有一个转换,并返回一个自定义对象:{u id:row.id,_rev:row.value.rev,“_deleted”:true}.filter().map()
是,但使用filter将返回馈送给它的确切行,但是我有一个转换,并返回一个自定义对象:{u id:row.id,_rev:row.value.rev,“_deleted”:true};是的,但使用筛选器将返回提供给它的确切行,但是我有一个转换,并返回一个自定义对象:{{u id:row.id,{u rev:row.value.rev,“{u deleted”:true};