Json数组使用javascript循环获得错误输出
我从JSON数组中提取数据,如下所示:Json数组使用javascript循环获得错误输出,javascript,arrays,json,Javascript,Arrays,Json,我从JSON数组中提取数据,如下所示: "abridged_directors": [{ "name": "Bill", "id": "742790769", "characters": ["Flint Lockwood"] }, { "name": "Anna", "id": "162654477", "characters": ["S
"abridged_directors": [{
"name": "Bill",
"id": "742790769",
"characters": ["Flint Lockwood"]
}, {
"name": "Anna",
"id": "162654477",
"characters": ["Sam Sparks"]
}, {
"name": "James",
"id": "162656402",
"characters": ["Tim Lockwood"]
}, {
"name": "Will",
"id": "770670480",
"characters": ["Chester V"]
}, {
"name": "Kristen",
"id": "770792145",
"characters": ["Barb"]
}],
我使用循环来正确显示结果。
我要找的是:
比尔、安、詹姆斯、威尔和克里斯汀
相反,我得到的是:
比尔、安、詹姆斯、威尔和克里斯汀
对于第二个姓氏,我不想用逗号,下面的if-else语句应该包括这一点,但它似乎不起作用
for (var i = 0;i < data.abridged_directors.length; i++){
if(i != 0 && i == data.abridged_directors.length-1){
// and the position of the character is greater than 0
$(document.body).append('& ' + data.abridged_directors[i].name + '<br>');
}
else if(i != data.abridged_directors.length-1 || i != data.abridged_directors.length-2){
$(document.body).append(data.abridged_directors[i].name + ', ');
}
else
$(document.body).append(data.abridged_directors[i].name + '<br>');
}
for(var i=0;i');
}
else if(i!=data.abrided_directors.length-1 | | i!=data.abrided_directors.length-2){
$(document.body).append(data.abred_directors[i].name+,');
}
其他的
$(document.body).append(data.abred_directors[i].name+'
');
}
我已经看了很长一段时间了,并且做了一些改变,但似乎没有任何效果。这可能是一些我没有看到的小东西,如果事实证明是这样的话,那么很抱歉 如果
中的|
应该是&&
如果您只支持IE9+,那么您可以使用映射来执行此操作。这里的关键是职责分离。这使它更容易理解。如果您需要IE9支持,那么您可以使用for循环来实现这一点。见以西结的解决方案
[编辑后包含ezekielDFM regex命令-更干净的解决方案]
伪代码:
首先构建数据(map命令)
格式化数据(join命令)
固定格式(替换命令)
Javascript
我想提供一个更干净的方法(imho)。尝试加入一个名称数组,只替换最后一个逗号,而不是循环和追加。见代码:
var names = [];
for (var i = 0;i < data.abridged_directors.length; i++)
{
names.push(data.abridged_directors[i].name);
}
$(document.body).append(names.join(', ').replace(/(.*),(.*)$/, "$1 & $2"));
var name=[];
对于(var i=0;i
这里有一个jsfiddle:我知道你得到了答案,但我花了一些时间来解决这个问题……kkk
希望能帮助别人:
$(json).each(function(i){
$("#result").append(this.name);
if(j-2 == i)
$("#result").append(" & ");
else{
if(!(j-1 == i))
$("#result").append(", ");}
});
正则表达式做得很好。这些天来,我在编码时尽量避免条件和循环。最后的正则表达式解决方案非常优雅。
$(json).each(function(i){
$("#result").append(this.name);
if(j-2 == i)
$("#result").append(" & ");
else{
if(!(j-1 == i))
$("#result").append(", ");}
});