在每个函数中循环遍历jQuery数组不起作用

时间:2018-06-18 23:52:18

标签: javascript jquery

我有来自另一个函数的API的数据。为了获得数据,我这样做:

var posts = get_posts();

然后我可以打印到控制台:

console.info( posts );

我最终会得到这样的结果:

[]
  0: {id: 123, date: "2018-01-01T12:00:00", slug: "asdf-xyz", author: 1, media: 1, …}
  1: {id: 123, date: "2018-01-01T12:00:00", slug: "asdf-xyz", author: 1, media: 1, …}
  ...

此数组中有多个条目,包含各种数据。

但是,如果我然后尝试遍历它们并执行某些操作,则每个语句都不会执行任何操作。就好像它完全被忽略了(可能是它)。

$.each( posts, function( index, record ) {

    alert( index );

});

我在这里做错了什么?

修改

这是我在函数内部返回(或应该)返回数组的代码。使用简单的console.log会返回数据,但使用stringify只会返回[]

$.each( object, function( key, value ) {

    var post = {
        id: value.id,
        ...
    };

    posts.push( post );

});

console.log( posts ); // prints the data out

JavaScript不是我最强的编码语言,所以我假设我可能错误地设置了数据?

2 个答案:

答案 0 :(得分:0)

应该没问题。我已经为你准备了一个工作案例。你能发现你的代码和下面的工作片段之间的区别吗?



var posts = [
  { name: 'Post1' },
  { name: 'Post2' }
];

$.each(posts, function(index, record) {
  console.log(index, record);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

问题可能出在您用来填充数组的代码中。你能提供更多的背景吗?

答案 1 :(得分:0)

您可以使用以下方式打印所有对象:

$.each( posts, function( index, record ) { alert(  JSON.stringify(record) ) });

或使用

的特定键
$.each( posts, function( index, record ) { alert(  record["slug"] ) });

运行代码并查看演示

$(function(){
    var posts = [];

    posts.push({id: 123, date: "2018-01-01T12:00:00", slug: "asdf-xyz", author: 1, media: 1});
    
    posts.push({id: 123, date: "2018-01-01T12:00:00", slug: "asdf-xyz", author: 1, media: 1});

    $.each( posts, function( index, record ) { alert(  JSON.stringify(record) ) });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>