将带有数组的对象转换为带有对象的数组的最佳方法,反之亦然 [英] best way to convert object with arrays to array with objects and viceversa

查看:75
本文介绍了将带有数组的对象转换为带有对象的数组的最佳方法,反之亦然的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将数组的对象转换为对象的数组,反之亦然的最佳方法是什么

what is the best way to convert an object of arrays to an array of objects and vice-versa

{
  category : ['a','b','c'],
  title : ['e','f','g'],
  code : ['z','x','v']
}

收件人

[
  {
    category : 'a',
    title : 'e',
    code : 'z'
  },
  {
    category : 'b',
    title : 'f',
    code : 'x'
  },
  {
    category : 'c',
    title : 'g',
    code : 'v'
  },
]

推荐答案

您可以使用两个函数来生成数组或对象.他们与

You could use two function for generating an array or an object. They works with

  • Object.keys for getting all own property names,

Array#reduce 用于迭代数组并收集要返回的项目,

Array#reduce for iterating an array and collecting items for return,

Array#forEach 仅创建数组.

Array#forEach just fo itarating an array.

function getArray(object) {
    return Object.keys(object).reduce(function (r, k) {
        object[k].forEach(function (a, i) {
            r[i] = r[i] || {};
            r[i][k] = a;
        });
        return r;
    }, []);
}

function getObject(array) {
    return array.reduce(function (r, o, i) {
        Object.keys(o).forEach(function (k) {
            r[k] = r[k] || [];
            r[k][i] = o[k];
        });
        return r;
    }, {});
}

var data = { category: ['a', 'b', 'c'], title: ['e', 'f', 'g'], code: ['z', 'x', 'v'] };

console.log(getArray(data));
console.log(getObject(getArray(data)));

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

这篇关于将带有数组的对象转换为带有对象的数组的最佳方法,反之亦然的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆