Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.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_Object_Merge_Concatenation - Fatal编程技术网

如何在子数组中合并对象,使javascript中只剩下一个数组和多个对象

如何在子数组中合并对象,使javascript中只剩下一个数组和多个对象,javascript,arrays,object,merge,concatenation,Javascript,Arrays,Object,Merge,Concatenation,我在array1中完整地看到了下面的数组,我需要每个子数组合并其中的对象,使其与之类似 最终数组 因此最终结果是一个包含6个对象的数组。这个上面表示其余的对象 我已经尝试了[].concat.apply([],数组),但它不能完全满足我的需要。我将在数组2的下面发布它的功能 数组1 [ [ { "col0": "Glasses" }, { "col1": "Milky G

我在array1中完整地看到了下面的数组,我需要每个子数组合并其中的对象,使其与之类似

最终数组



因此最终结果是一个包含6个对象的数组。这个上面表示其余的对象

我已经尝试了
[].concat.apply([],数组)
,但它不能完全满足我的需要。我将在数组2的下面发布它的功能

数组1

[
  [
    {
      "col0": "Glasses"
    },
    {
      "col1": "Milky Glasses"
    },
    {
      "col2": "292516467012796941"
    }
  ],
  [
    {
      "col0": "Knives"
    },
    {
      "col1": "Milky Knives"
    },
    {
      "col2": "292516484536599049"
    }
  ],
  [
    {
      "col0": "Forks"
    },
    {
      "col1": "Milky Forks"
    },
    {
      "col2": "292516497196057096"
    }
  ],
  [
    {
      "col0": "Gloves"
    },
    {
      "col1": "Kewl Gloves"
    },
    {
      "col2": "292534063457108493"
    }
  ],
  [
    {
      "col0": "Wrench"
    },
    {
      "col1": "Kewl Wrench"
    },
    {
      "col2": "292534088244396552"
    }
  ],
  [
    {
      "col0": "Monkey snake"
    },
    {
      "col1": "Kewl Monkey snake"
    },
    {
      "col2": "292534109863936521"
    }
  ]
]
这是我不想要的输出,但到目前为止我所能做到的。在数组FINAL的顶部查看我想要的输出

阵列2

[
  {
    "col0": "Glasses"
  },
  {
    "col1": "Milky Glasses"
  },
  {
    "col2": "292516467012796941"
  },
  {
    "col0": "Knives"
  },
  {
    "col1": "Milky Knives"
  },
  {
    "col2": "292516484536599049"
  },
  {
    "col0": "Forks"
  },
  {
    "col1": "Milky Forks"
  },
  {
    "col2": "292516497196057096"
  },
  {
    "col0": "Gloves"
  },
  {
    "col1": "Kewl Gloves"
  },
  {
    "col2": "292534063457108493"
  },
  {
    "col0": "Wrench"
  },
  {
    "col1": "Kewl Wrench"
  },
  {
    "col2": "292534088244396552"
  },
  {
    "col0": "Monkey snake"
  },
  {
    "col1": "Kewl Monkey snake"
  },
  {
    "col2": "292534109863936521"
  }
]

感谢您提前提供的帮助

您可以映射阵列并展开对象以获得单个对象

const
数据=[{col0:“眼镜”}、{col1:“乳白色眼镜”}、{col2:292516467012796900}、{col0:“刀”}、{col1:“乳白色刀”}、{col2:292516484536599040}、{col0:“叉子”}、{col2:292516497196057100}、{col0:“手套”}、{col2:2925363457100:{“Kewl扳手”}、{col2:29253408844396540}、{col0:“猴子蛇”}、{col1:“Kewl猴子蛇”}、{col2:29253410863936500}],
结果=data.map(a=>Object.assign({},…a));
console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
可以这样完成,而
arr
是您的原始数组-

for (let i = 0; i < arr.length; i++) {
  let res = {}, subArr = arr[i];
  subArr.forEach((a,ind) => {
Object.assign(res,subArr[0],subArr[1],subArr[2]);
  });
  arr[i] = res;
}
for(设i=0;i{
赋值(res,subar[0],subar[1],subar[2]);
});
arr[i]=res;
}

尼娜给出了最好的答案,但值得注意的是Object.assign()是一个浅拷贝

如果col属性本身是对象,则可以使用如下方法:

const finish = start.map((x) => ({
  ...x[0],
  ...x[1],
  ...x[2]
}));

如果我理解正确的话,…x[0]语法会创建x[0]的深度副本,我们会直接将其分配给新对象,而object.assign()创建一个浅拷贝。

您拥有的是什么?您想要得到的是顶部的阵列吗?标签阵列1下面的阵列是我拥有的,顶部的阵列是我想要的。最后,底部的标签阵列2是错误的尝试。
const finish = start.map((x) => ({
  ...x[0],
  ...x[1],
  ...x[2]
}));