如何在underscore.js中編寫下面的代碼。如何使用underscore.js編寫
for (var i = 0; i < res.hList.h.length; i++) {
if (res.hList.h[i].code == code) {
res.hList.h[i].packList.pack = d.h.packList.pack;
break;
}
}
如何在underscore.js中編寫下面的代碼。如何使用underscore.js編寫
for (var i = 0; i < res.hList.h.length; i++) {
if (res.hList.h[i].code == code) {
res.hList.h[i].packList.pack = d.h.packList.pack;
break;
}
}
var response = {
hotelList: {
hotel: [
{ availablePackageList: { package: 1 }, code: 1 },
{ availablePackageList: { package: 2 }, code: 2 },
{ availablePackageList: { package: 3 }, code: 3 },
{ availablePackageList: { package: 4 }, code: 4 }
]
}
};
var data = {
hotel: {
availablePackageList: { package: 42 }
}
};
var code = 3;
// This code will iterate over all hotels
_.each(response.hotelList.hotel, function(hotel) {
if (hotel.code == code) {
hotel.availablePackageList.package = data.hotel.availablePackageList.package;
}
});
/* Preferred solution: find first occurrence
// find hotel with code 3
var foundHotel = _.find(response.hotelList.hotel, function(hotel) {
return hotel.code == code;
});
// if found - update package
if (foundHotel) {
foundHotel.availablePackageList.package = data.hotel.availablePackageList.package;
}
*/
document.write('<pre>');
document.write(JSON.stringify(response, null, 2));
document.write('</pre>');
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
檢查underscore documentation的收藏功能,each
。
_.forEach(response.hotelList.hotel, function (hotel) {
if (hotel.code === code) {
hotel.availablePackageList.package = data.hotel.availablePackageList.package;
}
})
在ES6,語法會很相似(和你或許應該學習它):
response.hotelList.hotel.forEach(function (hotel) {
if (hotel.code === code) {
hotel.availablePackageList.package = data.hotel.availablePackageList.package;
}
});
您可以使用findWhere,因爲你是第一個被發現後斷裂。試試這樣:
_.findWhere(response.hotelList.hotel, {code :yourcode}).availablePackageList.package = data.hotel.availablePackageList.package;
_.find從你提供的列表中查找並返回符合規範的第一個項目。
var match = _.findWhere(response.hotelList.hotel, { code: code })
match.availablePackageList.package = data.hotel.availablePackageList.package;
@鮑勃海綿,有沒有什麼辦法既在一個功能結合起來? –
我已經更新了我的答案 –
@ bob-sponge,它轉換爲數組,不保留對象。 **回覆** Object {transaction:Object,totalRecords:148,hotelList:Object} ** foundHotel ** Array [148] –