javascript - 停止将数组推入数组

时间:2012-02-26 02:15:31

标签: javascript arrays multidimensional-array

我目前正在开发一个Javascript项目。我需要从大型json数据集中获取特定数据并将其存储在数组中以供以后使用。到目前为止,这是我的代码:

publicationArray = [] = datafile["publications"]
for (p in publicationArray){
    var publication = publicationArray[p];
    publicationKeywords.push (publication.keywords);
}

我相信大多数人都可以解决这个问题,这会从主数据集中获取所有具有ID“publication”的对象,然后遍历它们,获取每个单独对象的关键字并将它们存储在publicationKeywords(数组中)在代码中先前定义的)。问题是数据以

格式存储
[ [keyword1], [keyword2], [keyword3] ]

而我需要表格中的数据

[keyword1, keyword2, keyword3]

我对Javascript很新,所以我真的不知道我做错了什么,或者我应该搜索什么来帮助它。我想要的是什么,如果是的话,任何人都可以帮我解决问题吗?

3 个答案:

答案 0 :(得分:1)

如果publication.keywords是关键字数组,只需迭代它,将每个关键字添加到此内循环内的publicationArray

var publicationArray = [] = datafile["publications"];
for (p in publicationArray){
    var publication = publicationArray[p];
    for (keyword in publication.keywords) {
        publicationKeywords.push(keyword);
    }
}

另外,在迭代数组时应该使用vanilla for循环:

for (var i = 0; i < publicationArray.length; i++) {
        var publication = publicationArray[p];
        for (var j = 0; j < publication.length, j++) {
            publicationKeywords.push(publication[j]);
        }
}

在此推理:https://stackoverflow.com/a/3010848/187954

答案 1 :(得分:1)

你为什么不试试

publicationKeywords.push (publication.keywords[0]);

答案 2 :(得分:1)

var a = [[1],[2],[3]];
var b = [];
for(var i=0,n=a.length;i<n;i++){
   b = b.concat( a[i] );
}
console.log( b );