如何将2个数组连接到节点中的单个json /数组中

时间:2016-02-12 09:10:37

标签: arrays json node.js combiners

我在节点中有2个数组。

['3', '7' ]

[ 'Circulatory and Cardiovascular', 'Respiratory' ]

我想产生如下结果。

  

{{“id”:“3”,“name”:“Circulatory and Cardiovascular”},{“id”:“7”,“name”:“Respiratory”}}

2 个答案:

答案 0 :(得分:2)

我假设您要创建此数据结构(数组而不是哈希):

  

[{" id":" 3"," name":" Circulatory and Cardiovascular"},{" id& #34;:" 7","姓名":"呼吸"}]

在这种情况下,您可以像这样使用lodash

var _ = require('lodash');

var a1 = ['3', '7' ];
var a2 = [ 'Circulatory and Cardiovascular', 'Respiratory' ];

var obj = _.merge(_.map(a1, function (o) { return { id : o } }), _.map(a2, function (o) { return { name : o } }))

console.log(obj);

答案 1 :(得分:1)

对不起,这是输出中的一个数组,但它更容易。 你可以这样做

var idArray = ['3', '7' ];
var nameArray = [ 'Circulatory and Cardiovascular', 'Respiratory' ];
var newArray = [];

for (var i = 0; i < idArray.length; i++) {
    newArray.push({"id": idArray[i], "name": nameArray[i]});
}

输出:

[ { id: '3', name: 'Circulatory and Cardiovascular' },
  { id: '7', name: 'Respiratory' } ]

我不确定这是个好主意,但你可以将新数组转换为这样的对象

var newObject = newArray.reduce(function(o, v, i) {
  o[i] = v;
  return o;
}, {});

输出:

{ '0': { id: '3', name: 'Circulatory and Cardiovascular' },
  '1': { id: '7', name: 'Respiratory' } }

或其他方式:

Object.setPrototypeOf(newArray, Object.prototype); // Now it's an object

输出:

Object [
  { id: '3', name: 'Circulatory and Cardiovascular' },
  { id: '7', name: 'Respiratory' } ]

希望这有帮助!