我正在构建一个函数,它将遍历每个类的实例,提取一个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);
}
答案 0 :(得分:3)
首先,您尝试构建的数据结构无效 - 您不能拥有匿名嵌套对象。一系列对象似乎是您尝试做的最接近的有效解决方案。
其次,days
和price
被遗漏了,因为您正试图将它们设置在尚未存在的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;