如何按索引顺序将书籍数组的place属性替换为地点数组的name属性值
实现方案
1. 直接修改原数组(最简洁)
遍历书籍数组,按索引直接替换place属性即可,因为遍历边界是书籍数组的长度,天然自动忽略地点数组的多余元素:
booksArr.forEach((book, index) => { if (placeArr[index]) book.place = placeArr[index].name })
更精简的一行写法:
booksArr.forEach((book, i) => placeArr[i] && (book.place = placeArr[i].name))
2. 不修改原数组,返回新数组
适合需要保留原始书籍数据的场景,用可选链+空值合并运算符处理地点数组长度不足的边界情况:
const newBooksArr = booksArr.map((book, i) => ({ ...book, // 对应索引无地点数据时保留原有place值,不需要保留可直接写placeArr[i]?.name place: placeArr[i]?.name ?? book.place }))
说明
两种实现都天然满足「地点数组更长时忽略多余元素」的需求,不需要额外做长度截断处理。如果要求地点数组长度不足时,对应书籍的place强制赋值为undefined,删除空值合并的后续逻辑即可。
内容的提问来源于stack exchange,提问作者jrwebbie
相关产品推荐
相关产品推荐

