如何使用include()筛选数组中符合指定ID的元素并提取名称?
使用include()实现数组筛选与名称提取
要实现需求,你可以结合filter()、include()和map()方法,再根据预期结果调整顺序,具体代码如下:
const allowedIds = [1, 3] const allBoats = [{ id: 1, name: 'titanic' }, { id: 2, name: 'anna' }, { id: 3, name: 'boaty McBoatface' }] // 筛选符合id要求的船只,提取名称并调整顺序 const result = allBoats .filter(boat => allowedIds.includes(boat.id)) // 用include()判断id是否在允许列表中 .map(boat => boat.name) // 提取name属性 .reverse(); // 反转数组匹配预期顺序 console.log(result); // 输出: ['boaty McBoatface', 'titanic']
步骤说明
- 筛选符合条件的船只:使用
filter()遍历allBoats,通过allowedIds.includes(boat.id)检查当前船只的id是否在允许的id列表中,保留符合条件的对象。 - 提取名称属性:用
map()将筛选后的对象数组转换为仅包含name属性的字符串数组。 - 调整顺序:由于原数组中id为1的船只排在id为3的前面,而预期结果顺序相反,因此调用
reverse()反转数组得到目标结果。
如果希望直接按照allowedIds的逆序输出(不依赖原数组顺序),也可以用排序替代反转:
const result = allBoats .filter(boat => allowedIds.includes(boat.id)) .sort((a, b) => allowedIds.indexOf(b.id) - allowedIds.indexOf(a.id)) .map(boat => boat.name);
内容的提问来源于stack exchange,提问作者user12475368
相关产品推荐
相关产品推荐

