如何借助剩余参数从数组对象中提取id值(JavaScript)
解决方案
最简洁高效的方式是使用数组的map()方法,它专门用来将数组中的每个元素转换为你需要的格式:
// 直接在原代码基础上修改,一步完成转换 let newValues = user.info.socialMedia ? user.info.socialMedia.map(item => item.id) : [];
解释
map()会遍历数组里的每一个对象,把每个对象传入箭头函数item => item.id,函数返回该对象的id属性值,最终所有返回的id会组成一个新数组赋值给newValues。
如果你想用for of循环实现(你之前尝试没成功可能是细节没处理对),正确写法如下:
let newValues = []; // 先判断socialMedia是否存在,避免报错 if (user.info.socialMedia) { // 遍历数组里的每个对象 for (const item of user.info.socialMedia) { // 把每个对象的id推入新数组 newValues.push(item.id); } }
关于for in的注意点
你提到试过for in,但for in是用来遍历对象的键名的,不是数组元素。如果一定要用for in,需要通过索引取到数组元素:
let newValues = []; if (user.info.socialMedia) { for (const index in user.info.socialMedia) { const item = user.info.socialMedia[index]; newValues.push(item.id); } }
不过不推荐用for in遍历数组,因为它会遍历到数组原型链上的额外属性,优先用map()或for of更稳妥。
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

