我有一个由一系列单词组成的数组,以及每个单词的wordcount和ID。有点像:
var array = [[word1, word2, word3],[3,5,7],[id1,id2,id3]]
现在我想为每个单词创建一个对象,其中单词作为名称,计数和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]};
}
答案 0 :(得分:2)
您可以在一个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}
答案 1 :(得分:0)
如果您知道array [0]
是有序密钥,array[1]
是计数,array[2]
是ids,那么:
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]
};
}
然后你可以像这样引用变量的对象:
object.word1;
object.word2;
object.word3;
答案 2 :(得分:0)
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;
},{});