这里是Noob javascript爱好者。
我正在尝试理解javascript的各种高阶函数,并且对.map()在对象数组上的可能性特别好奇。
假设您有以下内容:
selectedId = ['u1', 'u2']
data = [
{id: 'u1', color: 'red', age: '24'},
{id: 'u2', color: 'blue', age: '18'},
{id: 'u3', color: 'yellow', age: '15'}
]如何创建一个只包含u1和u2对象的新数组?即:
selectedData = [
{id: 'u1', color: 'red', age: '24'},
{id: 'u2', color: 'blue', age: '18'},
]发布于 2020-04-18 22:56:16
您必须对selectedId数组执行Array#map操作,然后使用Array#find在data数组中找到相应的对象。
const selectedId = ['u1', 'u2'];
const data = [
{id: 'u1', color: 'red', age: '24'},
{id: 'u2', color: 'blue', age: '18'},
{id: 'u3', color: 'yellow', age: '15'}
];
const res = selectedId.map((id) => data.find((o) => o.id === id));
console.log(res);
发布于 2020-04-18 23:19:07
如果我理解正确的话,你可以使用数组过滤器,比如
data.filter(el => selectedId.includes(el.id));会给你
[
{id: 'u1', color: 'red', age: '24'},
{id: 'u2', color: 'blue', age: '18'}
]或者另选地
selectedId.map((id) => data.find((el) => el.id === id));会给你
[
{id: 'u1', color: 'red', age: '24'},
{id: 'u2', color: 'blue', age: '18'}
]https://stackoverflow.com/questions/61291141
复制相似问题