如何对数组中相同key统一赋值?

作者站长头像
站长
· 阅读数 21

有以下两个数组, 其中'name'后缀的数字由arr决定。arr数组有多长,array里的name就有多少个

              let arr=[0,1,2,3];
              
              let array=[
                {
                  name0:'1',
                  name1:'',
                  name2:'',
                  name3:'',
                },
                {
                  name0:'',
                  name1:'',
                  name2:'2',
                  name3:'',
                },
                {
                  name0:'',
                  name1:'6',
                  name2:'',
                  name3:'',
                },
                {
                  name0:'',
                  name1:'',
                  name2:'',
                  name3:'9',
                },
              ]

如何使得数组中相同key的value一样,效果如下

       array=[
                {
                  name0:'1',
                  name1:'6',
                  name2:'2',
                  name3:'9',
                },
                {
                  name0:'1',
                  name1:'6',
                  name2:'2',
                  name3:'9',
                },
                {
                  name0:'1',
                  name1:'6',
                  name2:'2',
                  name3:'9',
                },
                {
                  name0:'1',
                  name1:'6',
                  name2:'2',
                  name3:'9',
                },
              ]
回复
1个回答
avatar
test
2024-06-26
let arr = [0, 1, 2, 3];

let array = [
  {
    name0: '1',
    name1: '',
    name2: '',
    name3: '',
  },
  {
    name0: '',
    name1: '',
    name2: '2',
    name3: '',
  },
  {
    name0: '',
    name1: '6',
    name2: '',
    name3: '',
  },
  {
    name0: '',
    name1: '',
    name2: '',
    name3: '9',
  },
];


let values = {};

// 遍历数组,更新values对象
array.forEach(item => {
  arr.forEach((_, index) => {
    let key = 'name' + index;
    if (item[key]) {
      values[key] = item[key];
    }
  });
});

array = array.map(() => {
  let newObj = {};
  arr.forEach((_, index) => {
    let key = 'name' + index;
    newObj[key] = values[key] || '';
  });
  return newObj;
});

console.log(array);

answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容