javascript - 将多深度数组对象数组转换为对象数组

标签 javascript arrays object

我在将类似数组的对象数组转换为对象数组时遇到了一些麻烦。我正在使用 reduce 方法,它正确地将数组数据转换为第一组数组的对象,但第二次通过时,它正确地将数据设置为键:值对,但没有将它放在我要创建的对象中想要它在里面。

这是数组和函数:

var array = [
              [
                ['Name', 'Arusha'], ['Species', 'Arabica'], ['Region', 'Mount Meru in Tanzania, and Papua New Guinea'], ['Comments', 'Typica variety or a French Mission']
              ],
              [
                ['Name', 'Catimor'], ['Species', 'Interspecific hybrid'], ['Region', 'Latin America'], ['Comments', 'This is cross between Timor coffee and Caturra coffee. It was created in Portugal in 1959']
              ]
            ];

function convertArrayToObject(array) {
    var arr = [];

    array.reduce(function(result, currentArray) {
      for (var j = 0, i = 0; i < array[0].length; i++) {
        result[currentArray[i][0]] = currentArray[i][1];
      }
      arr.push(result);
      return arr;
    }, {});
return arr;
}

我的预期输出应该是这样的:

[
{ Name: 'Arusha', Species: 'Arabica', Region: 'Mount Meru in Tanzania, and Papua New Guinea', Comments: 'Typica variety or a French Mission' },
{ Name: 'Catimor', Species: 'Interspecific hybrid', Region: 'Latin America', Comments: 'This is cross between Timor coffee and Caturra coffee. It was created in Portugal in 1959' }
]

这是我目前返回的内容:

 [ { Name: 'Arusha', Species: 'Arabica', Region: 'Mount Meru in Tanzania, and Papua New Guinea', Comments: 'Typica variety or a French Mission' },
[Circular],
Name: 'Catimor',
Species: 'Interspecific hybrid',
Region: 'Latin America',
Comments: 'This is cross between Timor coffee and Caturra coffee. It was created in Portugal in 1959' ]

如有任何帮助,我们将不胜感激!

最佳答案

你可以使用 Array#map并为外部数组的每个元素返回一个新对象。在内部,您可以迭代所有项目并构建新属性。

var array = [[['Name', 'Arusha'], ['Species', 'Arabica'], ['Region', 'Mount Meru in Tanzania, and Papua New Guinea'], ['Comments', 'Typica variety or a French Mission']], [['Name', 'Catimor'], ['Species', 'Interspecific hybrid'], ['Region', 'Latin America'], ['Comments', 'This is cross between Timor coffee and Caturra coffee. It was created in Portugal in 1959']]],
    result = array.map(function (a) {
        var o = {};
        a.forEach(function (b) {
            o[b[0]] = b[1];
        });
        return o;
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 将多深度数组对象数组转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002247/

相关文章:

javascript - 引导灯箱 : Showing image captions from title attribute

javascript - 确保 jQuery 仅在所有 PHP 完全执行后才执行

java - 使用 Java 为 Android 应用程序解析 GeoJSON

arrays - JSON 列表(不是对象)到 Bash 数组?

python - 在 Python 中使用矩阵向量乘法进行速度优化

c++ - 我如何询问一个对象是否属于类 x?

javascript - 为什么使用 setInterval 时对象属性变得未定义

javascript - 如何使此交付计算器更加高效?

javascript - 无法在 GraphQL 突变中传递数组 - React Native

Javascript:图像对象的 onerror 事件有哪些参数?如何获取与图像相关的错误的更多详细信息?