从该元素中的每个类和内容实例创建一个对象

时间:2017-08-30 10:32:48

标签: javascript jquery html object dom

我正在构建一个函数,它将遍历每个类的实例,提取一个id,然后拉出相关的天数和价格,这将是id键的值。例如:

{
    {
        id: 1,
        info: {
            days: "5 days",
            price: "£300"
        }
    },
    {
        id: 2,
        info: {
            days: "9 days",
            price: "£500"
        }
    }
}

该功能如下,但似乎只为最后一个实例执行,并且不返回天数或价格:

function sortTrips () {
    let tripObj = {};
    $('.tab#top10 .col-md-4').each(function(index, obj) {   
        tripObj.id = $(this).attr('id');
        tripObj.id.info.days = $(this).find('.days').html();
        tripObj.id.info.price = $(this).find('.price').html();
    });
    console.log(tripObj);
}

1 个答案:

答案 0 :(得分:3)

首先,您尝试构建的数据结构无效 - 您不能拥有匿名嵌套对象。一系列对象似乎是您尝试做的最接近的有效解决方案。

其次,daysprice被遗漏了,因为您正试图将它们设置在尚未存在的info对象上。

您可以使用map()解决这两个问题并整理代码,如下所示:



function sortTrips() {
  var tripObj = $('.tab#top10 .col-md-4').map(function() {
    return {
      id: this.id,
      info: {
        days: $(this).find('.days').html(),
        price: $(this).find('.price').html()
      }
    }
  }).get();
  
  console.log(tripObj);
}

sortTrips();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="tab" id="top10">
  <div class="col-md-4" id="foo">
      <div class="days">5 days</div>
      <div class="price">£300</div>
  </div>
  <div class="col-md-4" id="bar">
      <div class="days">9 days</div>
      <div class="price">£500</div>
  </div>
  <div class="col-md-4" id="fizz">
      <div class="days">6 days</div>
      <div class="price">£600</div>
  </div>
</div>
&#13;
&#13;
&#13;