javascript - node.js + Object Array - Stack Overflow

In my node app i have to construct an object array from another object array.Consider my object array a

In my node app i have to construct an object array from another object array.

Consider my object array as..

[ { id_0: 356, id_1: 33, name_1: 'aaaa' },
  { id_0: 756, id_1: 89, name_1: 'bbbbb' },
  { id_0: 456, id_1: 89, name_1: 'ccccc' },
  { id_0: 356, id_1: 27, name_1: 'dddd' } ]

I have to construct an object array as like below:

[{
"356":["33":"aaaa","27":"ddddd"],------------->Changes made
"456":[{"89":"cccc"}],
"756":[{"89":"bbbbbbbb"}]
}]

I tried using async.map.But i cant get the right way to do it.Please help me to solve this.Thanks in advance...

In my node app i have to construct an object array from another object array.

Consider my object array as..

[ { id_0: 356, id_1: 33, name_1: 'aaaa' },
  { id_0: 756, id_1: 89, name_1: 'bbbbb' },
  { id_0: 456, id_1: 89, name_1: 'ccccc' },
  { id_0: 356, id_1: 27, name_1: 'dddd' } ]

I have to construct an object array as like below:

[{
"356":["33":"aaaa","27":"ddddd"],------------->Changes made
"456":[{"89":"cccc"}],
"756":[{"89":"bbbbbbbb"}]
}]

I tried using async.map.But i cant get the right way to do it.Please help me to solve this.Thanks in advance...

Share edited Apr 9, 2014 at 7:23 thefourtheye 240k53 gold badges466 silver badges501 bronze badges asked Apr 9, 2014 at 6:28 SubburajSubburaj 5,20211 gold badges47 silver badges95 bronze badges 2
  • What's the point of using async here? – Leonid Beschastny Commented Apr 9, 2014 at 6:34
  • It is Array.map() not async.map() and you don't usually call it that way, but as a method on an instance of an array. – Paul Commented Apr 9, 2014 at 6:35
Add a ment  | 

1 Answer 1

Reset to default 5

You can use Array.prototype.reduce function, like this

console.log(data.reduce(function(result, current) {
    var obj = {};
    result[current.id_0] = result[current.id_0] || [];
    obj[current.id_1] = current.name_1;
    result[current.id_0].push(obj);
    return result
}, {}));

Output

{ '356': [ { '33': 'aaaa' }, { '27': 'dddd' } ],
  '456': [ { '89': 'ccccc' } ],
  '756': [ { '89': 'bbbbb' } ] }

If you want to convert this to an array of object, just wrap the result of data.reduce with [] like this

console.log([data.reduce(function(result, current) {
    ...
    ...
}, {})]);

Edit:

result[current.id_0] = result[current.id_0] || [];

this line makes sure that result[current.id_0] is an array. If the value of result[current.id_0] is truthy, then that value is rturned but if it is not, then [] will be returned. So, a new array will be created and assigned to result[current.id_0]. It is actually a shorthand for

if (result.hasOwnProperty(current.id_0) === false) {
    result[current.id_0] = [];
}

Edit 2: If you like to keep the grouped elements as an object, you could do like this

console.log(data.reduce(function(result, current) {
    result[current.id_0] = result[current.id_0] || {};
    result[current.id_0][current.id_1] = current.name_1;
    return result
}, {}));

Output

{ '356': { '27': 'dddd', '33': 'aaaa' },
  '456': { '89': 'ccccc' },
  '756': { '89': 'bbbbb' } }

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744934300a4601923.html

相关推荐

  • javascript - node.js + Object Array - Stack Overflow

    In my node app i have to construct an object array from another object array.Consider my object array a

    1天前
    40

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信