合并来自两个不同类型数组的对象

时间:2017-10-26 15:18:32

标签: javascript arrays typescript lodash

想象一下,我们有两个数组。每个包含不同类型的对象。例如:

let first: Foo[] = [
    { a: 12, b: 'x', c: 0 },
    { a: 43, b: 'y', c: 0 }
];

let second: number[] = [11, 15];

我想以一种方式合并他们的对象,我最终得到一个如下所示的数组:

let first: Foo[] = [
    { a: 12, b: 'x', c: 11 },
    { a: 43, b: 'y', c: 15 }
];

如您所见,我只想将第二个数组中的值赋给第一个数组中对象的c属性。

我希望你理解我对问题的解释。伙计们,我相信你的技能!

3 个答案:

答案 0 :(得分:1)

你可以sei.lpVerb = L"open"; sei.lpFile = L"D:\\file.txt"; sei.lpDirectory = L"D:\\"; 将两个阵列合二为一,

zip

答案 1 :(得分:0)

通常情况下,Array.prototype.reduce为某种方法提供了良好的基础,例如这一个...



var listOfItems = [
  { a: 12, b: 'x', c: 0 },
  { a: 43, b: 'y', c: 0 }
];
var listOfValues = [11, 15];


function reassignValueToGivenKey(collector, item, idx) {
  item = Object.assign({}, item); // do not mutate original reference.
  item[collector.key] = collector.valueList[idx]; // reassign value.
  collector.itemList.push(item); // collect processed items separately.
  return collector;
}

var result = listOfItems.reduce(reassignValueToGivenKey, {

  key: 'c',
  valueList: listOfValues,
  itemList: []
  
}).itemList;

console.log('listOfItems : ', listOfItems);
console.log('result : ', result);

.as-console-wrapper { max-height: 100%!important; top: 0; }




答案 2 :(得分:-1)

我认为你应该这样做...... 也许不是最好的,但应该在你的情况下工作:) 这很简单......

for(var i in second){
   var elem = second[i];
   first[i]['c'] = elem;
}