如何在Node.js中从数组中的值创建对象

How do I create objects from values in an array in Node.js?

本文关键字:数组 创建对象 Node js      更新时间:2024-03-23

我有一个数组,由单词列表和每个单词的单词计数和ID组成。有点像:

var array = [[word1, word2, word3],[3,5,7],[id1,id2,id3]]

现在,我想为每个单词创建一个对象,将单词作为名称,将count和ID作为值。所以它看起来是这样的:

var word1 = {count: 3, id: 'id1'}

我该如何做到这一点?我试着使用如下所示的for循环来完成它,但它不起作用。如何根据数组中的值设置每个对象的名称?

for (var y=0; y < array[0].length; y++) {
        var array[0][y] = {count: array[1][y], id: array[2][y]};
    }

不需要单独的对象,而是可以在一个dict对象中添加单词,如下所示:

var words = {};
for (var y=0; y < array[0].length; y++) {
    words[array[0][y]] = {count: array[1][y], id: array[2][y]};
}

并且,您可以按以下方式访问word1

words['word1'] // {count: 1, id: id1} 
// if the word1 doesn't contain spaces, you could also use
words.word1 //  {count: 1, id: id1} 

如果您知道array [0]是有序密钥,array[1]是计数,array[2]是ID,那么:

var array = [[word1, word2, word3],[3,5,7],[id1,id2,id3]];
var orderedKeysArray = array[0];
var orderedCountArray = array[1];
var orderedIdArray = array[2];
//maybe add some code here to check the arrays are the same length?
var object = {};
//add the keys to the object
for(var i = 0; i < orderedKeysArray.length; i++) {
  object[orderedKeys[i]] = {
    count: orderedCountArray[i],
    id: orderedIdArray[i]
  };
}

然后你可以引用vars的对象,比如:

object.word1;
object.word2;
object.word3;

Loadash

var array = [['word1', 'word2', 'word3'],[3,5,7],['id1','id2','id3']]
var output = _.reduce(array[0], function (output, word, index) {
    output[word] = {count:array[1][index],id:array[2][index]};
  return output;
},{});