当前位置: 首页 > 知识库问答 >
问题:

如何将一个对象数组的一个属性的值赋给另一个对象数组的类似命名的属性?-Javascript

牧业
2023-03-14
  var arr1 = [{
        id: 1,
        city: 'London',
        'checked': false
        },
        {
        id: 2,
        city: 'NYC',
        'checked': false
        },
        {
        id: 3,
        city: 'Paris',
        'checked': false
        },
        {
        id: 4,
        city: 'Madrid',
        'checked': false
        }];


 var arr2 = [{
        id: 1,
        city: 'Madrid',
        'checked': true
        },
        {
        id: 2,
        city: 'Paris',
        'checked': false
        },
        {
        id: 3,
        city: 'NYC',
        'checked': true
        },
        {
        id: 4,
        city: 'London',
        'checked': false
        }];
  var arr3 = [{
        id: 1,
        city: 'London',
        'checked': false
        },
        {
        id: 2,
        city: 'NYC',
        'checked': true
        },
        {
        id: 3,
        city: 'Paris',
        'checked': false
        },
        {
        id: 4,
        city: 'Madrid',
        'checked': true
        }];

已更新-arr3中的id属性的顺序应与arr1中的id属性的顺序相同

共有1个答案

商飞尘
2023-03-14

通过这种方法,它使用了更多的现代方法,使用了mapfind等函数,而且我个人认为这种实现非常简单。

如果您不熟悉“箭头函数”语法,您可以在网上找到大量的文档,比如下面的文档。但正如您所看到的,这种方法的优点在于它干净、简洁和简单。

这个实现有点类似于@holydragon提供的答案,但是当您使用foreach函数时,您允许出现副作用,至少在这个实现中,通过使用map,这应该会减少代码中出现副作用的机会。

js lang-js prettyprint-override">var arr1 = [{id:1,city:"London",checked:!1},{id:2,city:"NYC",checked:!1},{id:3,city:"Paris",checked:!1},{id:4,city:"Madrid",checked:!1}];
var arr2 = [{id:1,city:"Madrid",checked:!0},{id:2,city:"Paris",checked:!1},{id:3,city:"NYC",checked:!0},{id:4,city:"London",checked:!1}];


var arr3 = arr1.map(({...o}) => {
  o.checked = arr2.find(x => x.city === o.city).checked;
  return o;
});
console.log(arr3);

// If you want a one line solution... 
var arr4 = arr1.map(({...o}) => Object.assign(o, {checked : arr2.find(x => x.city === o.city).checked}));
console.log(arr4);
 类似资料: