Javascript将对象推送到数组

时间:2015-02-03 01:51:19

标签: javascript jquery

我无法将对象推送到阵列,我无法弄清楚原因。此时,结果(记录)重复每个循环的最后一个实例。

JSFiddle

HTML

<div data-provider="prv1"></div>
<div data-rating="rtn1"></div>
<div data-price="prc1"></div>

<div data-provider="prv2"></div>
<div data-rating="rtn2"></div>
<div data-price="prc2"></div>

<div data-provider="prv3"></div>
<div data-rating="rtn3"></div>
<div data-price="prc3"></div>

<div data-provider="prv4"></div>
<div data-rating="rtn4"></div>
<div data-price="prc4"></div>

Javascript(w / jQuery)

(function(){

  var sort = $(".sort select");
  var provider = $("[data-provider]");
  var rating = $("[data-rating]");
  var price = $("[data-price]");

  var records = [];
  var record = {};

  $(provider).each(function(index, value){
    record.provider = $(provider).eq(index).data("provider"); 
    record.rating = $(rating).eq(index).data("rating");
    record.price = $(price).eq(index).data("price");
    records[index] = record;
  });


})();

1 个答案:

答案 0 :(得分:2)

在循环中,将每个索引设置为等于记录。由于记录范围是匿名函数,因此它对于每个索引都是相同的对象。

您想要的范围是提供给.each

的功能

this fiddle

$(provider).each(function(index, value){
    var record = {};
    ...
});