循环并将对象推入数组

时间:2015-07-24 08:43:17

标签: javascript jquery

HTML

<div class="row">
  <div class="col-xs-5 stateName">Kuala Lumpur</div>
  <div class="col-xs-7"><input id="1" placeholder="0.00" type="text"/></div>
</div>

<div class="row">
  <div class="col-xs-5 stateName">Kuala Kangsar</div>
  <div class="col-xs-7"><input id="2" placeholder="0.00" type="text"/></div>
</div>

MY JS

var stateArr = [],
    tempObj = {};

$('.stateName').each(function(){
  tempObj.id = $(this).next('div').find('input').attr('id');
  tempObj.name = $(this).text();                
  stateArr.push(tempObj);
});
console.log(stateArr)

我的结果都是Kuala Kangsar,知道我的循环中有什么问题吗?当我将对象推入循环中的数组时,我以为我做了正确的循环?

2 个答案:

答案 0 :(得分:4)

在循环tempObj={}

中声明对象
           var stateArr = [];
            $('.stateName').each(function(){
               var tempObj = {};  // declare obj inside loop
                tempObj['id'] = $(this).next('div').find('input').attr('id');
                tempObj['name'] = $(this).text();

                stateArr.push(tempObj);
            });

            console.log(stateArr);

<强> Demo

答案 1 :(得分:1)

只有jQuery的另一种方式

my $num;
if (defined($num) && $num ne "" && $num ne "0")
{
    # do something
}
var arr = $('.stateName').map(function(index, el){
  return {
    id : $(this).next('div').find('input').attr('id'),
    name : $(this).text() 
  };
}).toArray();

console.log(arr);

document.getElementById('res').innerHTML = JSON.stringify(arr);