下划线 - 使用underscore.js将复杂对象转换为数组

时间:2017-12-06 18:48:46

标签: javascript underscore.js

我正在尝试将我的对象数组格式化为一个组件使用的数组。我需要将对象的确切值映射到正确的位置。

e.g。

我的原始数据:

var rawData = [
                { name: 'john',
                  age: 23,
                  style : 'expert',
                  max : 'none'
                },
                { name: 'mick',
                  age: 36,
                  style : 'inter',
                  max : 'none'
                },
                { name: 'pete',
                  age: 44,
                  style : 'med',
                  max : 'none'
                }
               ]

我想使用underscore.js将此对象转换为以下数组格式,以便我可以在需要此格式的组件中使用。

请注意,只有name agestyle不是max。我有更多不受欢迎的属性,但例如上面我不想写所有。

var result = [
   [ "john", "23", "expoert"],
   [ "mick", "36", "inter"],
   [ "pete", "44", "med"]
] 

我尝试了pluckmap组合,但似乎无法在输出的数组中获得正确的顺序。任何帮助赞赏。

2 个答案:

答案 0 :(得分:5)



const rawData = [
     { name: 'john', age: 23, style : 'expert' },
     { name: 'mick', age: 36, style : 'inter' }
];

const result = rawData.map(Object.values);

console.log(result);




Theres根本不需要使用库。或者更明确地说:



    const rawData = [
         { name: 'john', age: 23, style : 'expert' },
         { name: 'mick', age: 36, style : 'inter' }
    ];

    const result = rawData.map(({name, age, style}) => [name, age, style]);

    console.log(result);




我更喜欢这个,因为无法保证对象键/值顺序。

答案 1 :(得分:1)

如果没有使用Array#map()Object.values()

的图书馆,这是微不足道的



var rawData = [{
  name: 'john',
  age: 23,
  style: 'expert'
}, {
  name: 'mick',
  age: 36,
  style: 'inter'
}, {
  name: 'pete',
  age: 44,
  style: 'med'
}]

var res = rawData.map(o=>Object.values(o))
console.log(res)