在lodash

时间:2017-03-06 01:11:39

标签: javascript arrays object typescript lodash

这是可能的lodash或任何其他javascript /打字稿方式

var obj = {
    a: [ {id:1},{id:2},{id:3}]
    b: [ {id:4},{id:5},{id:6}]
    c: [ {id:7},{id:8},{id:9}]
}
// transform to 
var arr = [
{title:a, items:[{id:1},{id:2},{id:3}]},
{title:b, items: [ {id:4},{id:5},{id:6}]},
{title:c, items: [ id:7},{id:8},{id:9}]}
]

2 个答案:

答案 0 :(得分:1)

您可以使用Object.keys



var obj = {
    a: [ {id:1},{id:2},{id:3}],
    b: [ {id:4},{id:5},{id:6}],
    c: [ {id:7},{id:8},{id:9}]
}

var result = Object.keys(obj).map(function(key) {
  return { title: key, items: obj[key] }
})

console.log(result);




答案 1 :(得分:1)

你可以使用lodash和ES6高度可读的单行代码:

_.map(obj, (items, title) => ({ title, items }));

您可以完全避免Object.keys(),因为map()适用于对象。回调函数获取对象键和该键的值作为参数。因此,您可以使用允许对象文字简写符号的方式命名它们,就像我们在此处使用itemstitle一样。