我正在从 JSON 数组中提取数据,如下所示:
"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>');
}
我已经关注这个问题有一段时间了,并进行了更改,但似乎没有任何效果。这可能是一些小事,我没有看到,如果事实果真如此,我很抱歉!
最佳答案
我想提供一个更干净的方法(恕我直言)。不要循环和追加,而是尝试加入一个名称数组并仅替换最后一个逗号。参见代码:
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"));
这是一个jsfiddle:http://jsfiddle.net/zYdH9/
关于javascript - 使用 javascript 循环 Json 数组得到错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22838760/