索引对象推入数组javascript

时间:2017-01-11 08:30:38

标签: javascript arrays object

找出解决方案花了我太长时间。

我有以下对象

p{
  1: "a"
  2: "aa"
 }

p1 {
  1: "b"
  2: "bb"
}

p3 {
  1: "c"
  2: "cc"
}

我有一个数组parr。我希望将与索引匹配的对象的值推送到数组中......就像下面的格式

一样
parr: Array[2]
 0: object
    outputone  : "a"
    outputtwo  : "b"
    outputthree: "c"
 1: object
    outputone  : "aa"
    outputtwo  : "bb"
    outputthree: "cc"

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以使用数据透视算法来更改对象的顺序



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

var object = { p: { 1: "a", 2: "aa" }, p1: { 1: "b", 2: "bb" }, p3: { 1: "c", 2: "cc" } },
    result = pivot(object);

console.log(result);




与自定义键相同



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

var object = { p: { 1: "a", 2: "aa" }, p1: { 1: "b", 2: "bb" }, p3: { 1: "c", 2: "cc" } },
    result = pivot(object, ['outputone', 'outputtwo', 'outputthree']);

console.log(result);