在第一个循环之前初始化计数器

Initialise a counter before the first loop

本文关键字:初始化 计数器 第一个 循环      更新时间:2023-09-26

这一行

$.each(data[0].hotel_id, function (index, value) {

循环hotel_id数组,为字典中的每个条目执行内部JS代码,将索引设置为字典中的键,并将值设置为内容。

我的字典:

"hotel_id": [{
    "hotel_id": ["1"]
}, {
    "hotel_id": ["2"]
}, {
    "hotel_id": ["3"]
}, {
    "hotel_id": ["4"]
}],

具有相同索引的所有项,因此index的值将始终为'hotel_id',当我试图使用它从其他字典中查找相关的额外数据时,这对我来说是没有用的。

我将在第一次循环之前初始化一个计数器,并在每次迭代时增加它,然后使用该值从其他数组中查找相关的额外数据。

查看我的js代码:http://pastebin.com/jBWEDZrN

这是总结从我的js代码在ajax调用(url: 'get_gr',):

$.each(data[0].hotel_id, function (index, value) {
    var $li = $('<li><input name="hotel_id[]" value="' + value.hotel_id + '" style="display:none;"></li>');
    var $tooltip = $('<div class="tooltip"></div>').appendTo($li);
    $li.appendTo('#residence_name');
    var info_ru = data[0].residence_u[index];
    $.each(info_ru.units, function (index, value) {
        $tooltip.append(value + ' & ' + info_ru.extra[index] + ' & ' + info_ru.price[index] + '<br>');
    });
    var info_rp = data[0].residence_p[index];
    $.each(info_rp.start_date, function (index, value) {
        $tooltip.append(value + ' & ' + info_rp.end_date[index] + ' & ' + info_rp.price_change[index] + '<br>');
    });
    tool_tip()
});

这是输出php代码(url: 'get_gr',):

[{
    "guide": null,
    "hotel_id": [{
        "hotel_id": ["1"]
    }, {
        "hotel_id": ["2"]
    }, {
        "hotel_id": ["3"]
    }, {
        "hotel_id": ["4"]
    }],
    "residence_u": [{
        "units": ["hello", "how", "what"],
        "extra": ["11", "22", "33"],
        "price": ["1,111,111", "2,222,222", "3,333,333"]
    }, {
        "units": ["fine"],
        "extra": ["44"],
        "price": ["4,444,444"]
    }, {
        "units": ["thanks", "good"],
        "extra": ["55", "66"],
        "price": ["5,555,555", "6,666,666"]
    }],
    "residence_p": [{
        "start_date": ["1111", "2222"],
        "end_date": ["1111", "2222"],
        "price_change": ["1111", "2222"]
    }, {
        "start_date": ["3333", "444"],
        "end_date": ["3333", "4444"],
        "price_change": ["3333", "4444"]
    }, {
        "start_date": ["5555", "6666"],
        "end_date": ["5555", "6666"],
        "price_change": ["5555", "6666"]
    }]
}]

我该怎么办?

更新:(此更新是针对上面的输出php)

我插入几个(array)值与json_encode在一行从数据库表,现在想要回声他们与jquery的顺序。

输出js代码如下:

1
hello &11,1,111,111
how &22,2,222,222
what &33,3,333,333,
1111 &1111,1111
2222 &2222,2222

2
fine &44,4,444,444
3333 &3333,3333
4444 &4444,4444

3
thanks &55,5,555,555
good &66,6,666,666
5555 &5555,5555
6666 &6666,6666

4

不,您的数组中没有具有相同索引的项。它具有具有不同索引的项,但该值是一个对象,其中包含每个对象具有相同名称的属性。如果数组中有四个元素,索引将从03

您可以在循环中使用value.hotel_id来获取作为属性值的数组,例如["1"]

如果属性中的数组只包含一个id,您可以使用value.hotel_id[0]来获取该id。

的例子:

$.each(data[0].hotel_id, function (index, value) {
  alert(value.hotel_id[0]);
});
http://jsfiddle.net/Guffa/BWLqw/

我不明白使用each和匿名函数的意义。

我只会使用for循环。

for(var n = 0; n < data[0].hotel_id.length; n++) {
  // put your function code here or call a named func(data[0].hotel_id[n])
}

我只在应用将在其他地方重用的函数时使用它们。