繁体   English   中英

如何将2个数组组合成1个对象javascript

[英]How to combine 2 arrays into 1 object javascript

我有2个要“减少”为1个对象的数组。

因此,例如:

我有..

var originalData = [1,2,3];

var newData = [3,1,2];

我想将这两个数组组合成一个看起来像这样的对象:

var newOrderObject = {1:3, 2:1, 3:2};

即时通讯使用减少功能,但似乎映射它们不同

var newOrderObject = originalData.reduce(function(newData) {
  var orderObject = {};
  originalData = newData;
  return orderObject;
}, {});

任何建议将不胜感激

减少第一个数组(键),并使用index从第二个数组获取index

 var originalData = [1,2,3]; var newData = [3,1,2]; var newOrderObject = originalData.reduce(function(obj, key, index) { obj[key] = newData[index]; return obj; }, {}); console.log(newOrderObject); 

您可以映射单个对象并将其分配给单个对象。 如果可以使用空数组,请使用一个空对象作为目标值。

 var keys = [1, 2, 3], values = [3, 1, 2], object = Object.assign({}, ...keys.map((k, i) => ({ [k]: values[i] }))); console.log(object); 

更干净的方法是将数组转置为键/值对数组,然后映射对象。

 const transpose = (r, a) => a.map((v, i) => (r[i] || []).concat(v)); var keys = [1, 2, 3], values = [3, 1, 2], object = Object.assign( {}, ...[keys, values] .reduce(transpose, []) .map(([k, v]) => ({ [k]: v })) ); console.log(object); 

您只是在使用.reduce错误。

  • 它的回调的第一个参数是您传递的累加器对象。
  • 第二个是当前迭代的项目。
  • 第三是索引。

使用所有3个,您将获得想要的结果。

 var originalData = [1,2,3]; var newData = [3,1,2]; var newOrderObject = originalData.reduce(function(acc, item, i) { return Object.assign(acc, { [item]: newData[i] }) }, {}); console.log(newOrderObject) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM