Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并来自两个不同类型数组的对象_Javascript_Arrays_Typescript_Lodash - Fatal编程技术网

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

Javascript 合并来自两个不同类型数组的对象,javascript,arrays,typescript,lodash,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

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

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
属性


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

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

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

您可以
zip
将两个数组合并为一个

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

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

const result: Foo[] = first.map((e, i) => {
    return <Foo>Object.assign({}, e, { c: second[i] });
});
const-first:Foo[]=[
{a:12,b'x',c:0},
{a:43,b'y',c:0}
];
常数秒:数字[]=[11,15];
常量结果:Foo[]=first.map((e,i)=>{
返回Object.assign({},e,{c:second[i]});
});

通常,
Array.prototype.reduce
为类似这样的方法提供了良好的基础,例如这一方法

var listOfItems=[
{a:12,b'x',c:0},
{a:43,b'y',c:0}
];
var listOfValues=[11,15];
函数重新分配给IVENKEY(收集器、项目、idx){
item=Object.assign({},item);//不要改变原始引用。
项[collector.key]=collector.valueList[idx];//重新分配值。
collector.itemList.push(item);//分别收集处理过的项目。
回程收集器;
}
var结果=listOfItems.reduce(将值重新分配给IVENKEY{
键:“c”,
valueList:listOfValues,
项目列表:[]
}).项目清单;
log('listOfItems:',listOfItems);
log('result:',result)

.as console wrapper{max height:100%!important;top:0;}
您尝试过什么吗?是我还是这个问题至少每小时发布两次?@sjahan请提供至少一份副本,我将不胜感激。为什么会有这么多反对票?我想你会看到我的问题重复了,但为什么不链接到类似的线程呢?当然,这个解决方案很简单而且有效。但是如果下一次需要压缩到
b
a
或某个键,因为它在运行时是通用的,所以不知道该怎么办?