使用each()将元素推送到JSON

时间:2013-11-28 08:56:45

标签: jquery json each

我想通过each()

将一些值推送到JSON

这是我的HTML代码:

<div class="user-dat" data-unread="61222"></div>
<div class="user-dat" data-unread="61555"></div>
<div class="user-dat" data-unread="61206"></div>

我的jquery代码

$(".user-data").each(function(index,value(){
  var unreadID = [];
  unreadID.push($(this).attr('data-unread'));
}

这是我的输出:

["61222"]
["61555"]
["61206"]

但我想要这个:

["61222","61555","61206"]

如何修复我的代码,或者有任何想法建议?

感谢。

3 个答案:

答案 0 :(得分:3)

使用.map()

var array = $('.user-dat').map(function(){
    return $(this).data('unread')
}).get()

在您的情况下,您需要在共享上下文中声明数组,以便每次调用每个回调都不会重置数组

答案 1 :(得分:3)

您在每次迭代时重新定义 unreadID 。所以在$ .each之外声明它会解决你的问题。

答案 2 :(得分:2)

问题是您每次迭代都要重新定义数组。在each函数之外定义数组,如下所示:

var unreadID = [];
$( ".user-data" ).each( function( index,value ) {
  unreadID.push( $(this).attr( "data-unread" ) );
});

如果将数组的定义放在循环中,对于每个项目,数组将重置为[] - 一个空数组。在外部定义变量可确保在继续迭代其余元素时保留现有值。