我有来自另一个函数的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不是我最强的编码语言,所以我假设我可能错误地设置了数据?
答案 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;
问题可能出在您用来填充数组的代码中。你能提供更多的背景吗?
答案 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>