ir2*_*pid 2 javascript functional-programming rxjs typescript ionic-framework
我正在尝试使用函数式编程
我有两个数组
arr1=[{prodId:2}{prodId:4}]
arr2=[{id:1, name:"Test1"},
{id:2, name:"Test2"},
{id:3, name:"Test3"},
{id:4, name:"Test4"},
{id:5, name:"Test5"}]
Run Code Online (Sandbox Code Playgroud)
使用组合
过滤,映射,一些,减少功能
我想从arr2中提取项目
where arr2.id === arr1.prodId
Run Code Online (Sandbox Code Playgroud)
我的输出arr将是:
[{id:2, name:"Test2"},
{id:4, name:"Test4"}]
Run Code Online (Sandbox Code Playgroud)
我试图避免forEach并使用函数式编程.
你应该filter结合使用方法includes和map.
let arr1=[{prodId:2},{prodId:4}], arr2=[{id:1, name:"Test1"}, {id:2, name:"Test2"}, {id:3, name:"Test3"}, {id:4, name:"Test4"}, {id:5, name:"Test5"}];
let ids = arr1.map(({prodId}) => prodId);
let result = arr2.filter(({id}) => ids.includes(id));
console.log(result);Run Code Online (Sandbox Code Playgroud)
另一种方法是使用some方法.
let arr1=[{prodId:2},{prodId:4}], arr2=[{id:1, name:"Test1"}, {id:2, name:"Test2"}, {id:3, name:"Test3"}, {id:4, name:"Test4"}, {id:5, name:"Test5"}];
let result = arr2.filter(({id}) => arr1.some(({prodId}) => prodId == id));
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |