javascript - 停止将数组插入数组

问题描述:

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

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

正如我敢肯定,你们中的大多数可以算出来,这需要与ID为“出版物”的所有对象从主数据集,然后通过他们循环,走的关键字每个单独的对象并将它们存储在publicationKeywords(代码中早先定义的一个数组)中。问题是,数据存储格式

[ [keyword1], [keyword2], [keyword3] ] 

,而我需要在表格中的数据

[keyword1, keyword2, keyword3] 

我非常新的JavaScript,所以我真的不知道我做错了事,或者我应该寻求帮助。是我想要的吗?如果有的话,任何人都可以帮助我解决问题吗?

+0

你真的打算让'p'成为一个全局变量吗?如果没有,使用'var'使它在包含它的函数中是局部的。 – ThiefMaster 2012-02-26 02:20:38

+0

只是一个常见的JS begginer陷阱:使用常规for循环而不是for-in迭代数组。当需要迭代对象的键时,仅使用for-in。 – hugomg 2012-02-26 03:28:26

+0

感谢大家的提示。这么多种不同的方式来做! – 2012-02-26 19:03:15

如果publication.keywords是一个关键字数组,只需对其进行迭代,将每个关键字添加到此内部循环中的publicationArray

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

推理这里:

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

此外,你应该遍历数组时,使用循环香草https://*.com/a/3010848/187954

你为什么不尝试

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

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);