首页 > 解决方案 > 将两个多维数组合并为一个带对象的多维数组

问题描述

我正在学习新的 JavaScript ES6 语法,并尝试使用来自其他 2 个多维数组的对象创建一个多维数组。大概我的语法不正确,但我不知道如何修复它。结果应该是:

[
  [{    letter: w,    instances: 1
  }, {  letter: o,    instances: 1
  }, {  letter: d,    instances: 2
  }, {  letter: r,    instances: 1
  }],
  [{    letter: s,    instances: 1
  }, {  letter: y,    instances: 1
  }],
  [{    letter: h,    instances: 1
  }, {  letter: e,    instances: 1
  }, {  letter: l,    instances: 2
  }, {  letter: o,    instances: 1
  }]
]

我的代码使用了两种地图方法:

var letters = [
  ["w", "o", "d", "r"],
  ["s", "y"],
  ["h", "e", "l", "o"]
];
var numbers = [
  [1, 1, 2, 1],
  [1, 1][1, 1, 2, 1]
];
var objArr = letters.map(function(c, i) {
  return c.map(function(c2, i2, a2) {
    return {
      letter: c2,
      instances: numbers[i]
    }
  })
});
console.log(objArr);

它正确返回包含对象和正确字母值的多维数组,但数值不正确。谁能找到为什么会这样?另外,有没有人认为有更好的方法来存储字母和数字的数量?

标签: javascriptarrays

解决方案


instances:请参阅下面的一个非常小的错误

var letters = [["w", "o", "d", "r"],["s", "y"],["h", "e", "l", "o"]];

var numbers = [[1,1,2,1],[1,1], [1,1,2,1]];

var objArr = letters.map(function(c,i) {
                return c.map(function(c2,i2) {
                    return {letter: c2, instances: numbers[i][i2]}
                })
            });

console.log(objArr)


推荐阅读