合并数组对象中两个属性值并新增属性的实现方法
合并数组对象中两个属性值并新增属性的实现方法
看起来你想要给数组里的每个对象新增一个fullname属性,把name和name2的值拼接起来对吧?先说说你当前代码的问题:你用Object.values(arr[i]).push(...),这其实是把拼接后的字符串加到了对象值组成的临时数组里,而不是给原对象添加新属性,所以达不到预期效果。
下面给你两种常用的实现方式:
方法一:使用forEach修改原数组
如果你想直接修改原数组里的对象,可以这样写:
const arr = [{name:"test",name2:"ing"},{name:"desc",name2:"ription"}]; arr.forEach(ele => { // 直接给当前对象新增fullname属性,拼接name和name2 ele.fullname = ele.name + ele.name2; }); console.log(arr); // 就能得到你想要的结果
这种方式会直接修改原数组中的每个对象,适合不需要保留原数组的场景。
方法二:使用map返回新数组(更推荐)
如果你不想修改原数组,而是生成一个全新的数组,map方法会更合适——它不会改变原数组,而是返回处理后的新数组,更符合无副作用的编程理念:
const arr = [{name:"test",name2:"ing"},{name:"desc",name2:"ription"}]; const newArr = arr.map(ele => { // 解构原对象的所有属性,再新增fullname属性返回新对象 return { ...ele, fullname: ele.name + ele.name2 }; }); console.log(newArr); // 输出预期的新数组 console.log(arr); // 原数组保持不变
你之前的思路方向是对的,只是选错了操作对象,只要直接给每个元素添加属性就可以啦~
备注:内容来源于stack exchange,提问作者vinay kumar
相关产品推荐
相关产品推荐

