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,所以我真的不知道我做错了事,或者我应该寻求帮助。是我想要的吗?如果有的话,任何人都可以帮助我解决问题吗?
答
如果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://stackoverflow.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);
你真的打算让'p'成为一个全局变量吗?如果没有,使用'var'使它在包含它的函数中是局部的。 – ThiefMaster 2012-02-26 02:20:38
只是一个常见的JS begginer陷阱:使用常规for循环而不是for-in迭代数组。当需要迭代对象的键时,仅使用for-in。 – hugomg 2012-02-26 03:28:26
感谢大家的提示。这么多种不同的方式来做! – 2012-02-26 19:03:15