Javascript 使用不同的关键点组合多个对象阵列

Javascript 使用不同的关键点组合多个对象阵列,javascript,arrays,Javascript,Arrays,我有两个互有不同键的对象数组,我想把这些数组合并成一个数组 对象1的数组 0:{materi: "materi1"} 1:{materi: "materi2"} 2:{materi: "materi3"} 3:{materi: "materi4"} 对象2数组 0:{colour: "#FFEBCD"} 1:{colour: "#8A2BE2"} 2:{colour: "#DEB887"} 3:{colour: "#5F9EA0"} 我所做的是在这里推动,但没有给我想要的输出 console

我有两个互有不同键的对象数组,我想把这些数组合并成一个数组

对象1的数组

0:{materi: "materi1"}
1:{materi: "materi2"}
2:{materi: "materi3"}
3:{materi: "materi4"}
对象2数组

0:{colour: "#FFEBCD"}
1:{colour: "#8A2BE2"}
2:{colour: "#DEB887"}
3:{colour: "#5F9EA0"}
我所做的是在这里推动,但没有给我想要的输出

console.log(mapped, 'mapped') 
console.log(color, 'color')
//console.log(mapped.push(color))
//console.log(mapped.push.apply(mapped, color))
// console.log(mapped.concat(color))
这是我想要的输出

[{
  "color": '#E9967A',
  "materi": "Laurie Henderson"
},
{
  "color": '#8B0000',
  "materi": "Toni Ferrell"
},
{
  "color": '#9932CC',
  "materi": "Christi Summers"
},
{
  "color": '#FF8C00',
  "materi": "Adams Gray"
},
{
  "color": '#556B2F',
  "materi": "Maricela Bernard"
}]
您可以使用
array#map
合并两个数组。使用第一个数组中的值,并使用索引从第二个数组中获取值

const materials=[{materi:“materi1”}、{materi:“materi2”}、{materi:“materi3”}、{materi:“materi4”}],
colors=[{COLOR:{FFEBCD},{COLOR:{8A2BE2},{COLOR:{DEB887},{COLOR:{5F9EA0}];
const result=materials.map({material},index)=>({'color':colors[index].color,material}));
控制台日志(结果)
您可以使用
数组#map
合并两个数组。使用第一个数组中的值,并使用索引从第二个数组中获取值

const materials=[{materi:“materi1”}、{materi:“materi2”}、{materi:“materi3”}、{materi:“materi4”}],
colors=[{COLOR:{FFEBCD},{COLOR:{8A2BE2},{COLOR:{DEB887},{COLOR:{5F9EA0}];
const result=materials.map({material},index)=>({'color':colors[index].color,material}));
控制台日志(结果)您可以使用将每一对合并在一起

var materials=[{materi:“materi1”}、{materi:“materi2”}、{materi:“materi3”}、{materi:“materi4”}];
var colors=[{COLOR:#FFEBCD},{COLOR:#8A2BE2},{COLOR:#DEB887},{COLOR:#5F9EA0}];
var merged=materials.map(函数(m,i){
返回Object.assign({},m,colors[i]);
})
console.log(合并)
您可以使用它将每一对合并在一起

var materials=[{materi:“materi1”}、{materi:“materi2”}、{materi:“materi3”}、{materi:“materi4”}];
var colors=[{COLOR:#FFEBCD},{COLOR:#8A2BE2},{COLOR:#DEB887},{COLOR:#5F9EA0}];
var merged=materials.map(函数(m,i){
返回Object.assign({},m,colors[i]);
})

log(合并)
您需要创建具有属性组合的新数组,它们不能自动合并到新对象中

一种方法是:

var arr1 = [{colour: "#FFEBCD"}], arr2 = [{materi: "materi1"}]; // your arrays

var combined = arr1.map(function(element, index){
    return {
        color: element.color,
        materi: arr2[index].materi
    }
})
如果不进一步解释如何将属性合并到新对象中,我认为这是最好的答案


另外,这也有点危险,因为我们无法确定两个数组的长度是否相同,因此也需要以某种方式进行处理。

您需要使用属性的组合创建新数组,它们无法自动合并到新对象中

一种方法是:

var arr1 = [{colour: "#FFEBCD"}], arr2 = [{materi: "materi1"}]; // your arrays

var combined = arr1.map(function(element, index){
    return {
        color: element.color,
        materi: arr2[index].materi
    }
})
如果不进一步解释如何将属性合并到新对象中,我认为这是最好的答案


另外,这有点危险,因为我们无法确定两个数组的长度是否相同,因此也需要以某种方式进行处理。

您的输入和输出具有不同的值。你也试过什么吗?@Rajesh抱歉,输出只是举个例子,我想忽略这些值。我尝试了mapped、push和concat,但没有给出我想要的结果,即您的输入和输出具有不同的值。你也试过什么吗?@Rajesh抱歉,输出只是举个例子,我想忽略这些值。我尝试了映射、推送和concat,但没有给出我想要的结果。这对OP来说真的很难理解。这对OP来说真的很难理解。是的,这些数组在合并之前没有相同的长度。这两个数组都已经剪切了,其中一个具有相同的长度,原因一个数组我设置为20,另一个是API中的动态数组,谢谢或更正是的,这些数组在合并之前没有相同的长度。两个数组都已剪切,其中一个数组的长度相同,原因一个数组我设置为20,另一个是API中的动态数组,谢谢或更正哇,你这么快就编辑了答案,它让我了解了javasacript中的数据哇,你这么快就编辑了答案,它让我了解了javasacript中的数据