JSON数组 - 删除第一个元素

3

我希望不要删除数组中的第一个记录,而是将其添加到我的页面上。我从下面的JSON文件中获取数据:

$(data.content).each(function(index, content){
  $("#htmlID").append('<span>' + content.myinfo + ');
});
    {

    "content": 

    [ 
{"myinfo":"Bill Clinton 095 years old. "},
{"myinfo":"Bill Clinton 195 years old. "},
{"myinfo":"Bill Clinton 295 years old. "},
{"myinfo":"Bill Clinton 295 years old. "}

    ]
    }

当我将数据附加到页面时,一切都很完美,但我希望跳过第一个元素(索引)...我基本上不想为特定输出带回95岁的比尔·克林顿。
我该如何做到这一点?(grep?移除,删除?)
最简单的方法是什么?
4个回答

7

您可能不想修改数组或JSON,因此在执行循环时只需测试您所在的元素即可:

$(data.content).each(function(index, content){
    if (index>0) { // skips first element
        $("#htmlID").append('<span>' + content.myinfo + '</span>');
    }
});

或者更好的方法是,使用传统的 for 循环,这样可以节省一些开销:
for (var i=1; i<data.content.length; i++) {
    $("#htmlID").append('<span>' + data.content[i].myinfo + '</span>');
}

1
这也是我的第一反应。简单而且有效。即使你“喜欢”jQuery的.each()函数,也一定要使用for循环;这样你就不用为每个项目运行一个if语句了。如果你不关心保留JSON,Grigor的方法也很好。 - Greg Pettit

2
如果您只想跳过第一个项目,可以使用以下方法:
$(data.content).each(function(index, content){
  if (index > 0) {
    $("#htmlID").append('<span>' + content.myinfo + '</span>');
  }
});

2

使用.shift();方法来实现,它将移动第一个元素。


只需记住,shift 返回移位后的元素;不要根据 shift 返回的内容进行操作,而是应该使用原始变量的剩余部分。 - Greg Pettit

0

怎么样使用旧式的for循环,从索引1开始:

var target = $("#htmlID");
for (var i = 1, len = data.content.length; i < len; i++) {
    target.append('<span>' + data.content[i].myinfo + '</span>');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接