我可以继续添加或删除数组中的记录,它会正常工作,直到它到达最后一个,即使该记录是已经处理过的记录的精确副本。
阵列:
[
{
"adID": "1",
"isDefault": "false",
"adName": "Ad 1 Name",
"adDesc": "Ad 1 Description",
"adURL": "",
"adFormat": "image",
"adImages": {
"adImageDSK": "../img/bgfour.jpg",
"adImageDEV": "../img/bgfour.jpg"
}
},
{
"adID": "2",
"isDefault": "true",
"adName": "Ad 2 Name",
"adDesc": "Ad 2 Description",
"adURL": "",
"adFormat": "image",
"adImages": {
"adImageDSK": "../img/bgnine.jpg",
"adImageDEV": "../img/bgnine.jpg"
}
},
{
"adID": "3",
"isDefault": "false",
"adName": "Ad 3 Name",
"adDesc": "Ad 3 Description",
"adURL": "",
"adFormat": "image",
"adImages": {
"adImageDSK": "../img/bgseven.jpg",
"adImageDEV": "../img/bgseven.jpg"
}
},
{
"adID": "4",
"isDefault": "false",
"adName": "Ad 4 Name",
"adDesc": "Ad 4 Description",
"adURL": "",
"adFormat": "image",
"adImages": {
"adImageDSK": "../img/bgfive.jpg",
"adImageDEV": "../img/bgfive.jpg"
}
}
]
jQuery的:
$.getJSON("../json/adverts.json", function (data) {
"use strict";
function loadAdData() {
adArray = [];
$.map(data, function (item) {
adArray.push({
'isDefault': item.isDefault,
'adID': item.adID,
'adName': item.adName,
'adDesc': item.adDesc,
'adURL': item.adURL,
'adFormat': item.adFormat,
'adImageDSK': item.adImages.adImageDSK,
'adImageDEV': item.adImages.adImageDEV
});
});
}
loadAdData();
var defArray = adArray;
console.log(defArray);
var newArray = [];
$.each(defArray, function (i, item) {
if (item.isDefault === 'true') {
newArray.push({
'adID': item.adID,
'adName': item.adName,
'adDesc': item.adDesc,
'adURL': item.adURL,
'adFormat': item.adFormat,
'adImageDSK': item.adImageDSK,
'adImageDEV': item.adImageDEV
});
defArray.splice($.inArray([i], defArray), 1);
} else {
console.log(item.adID);
}
})
}
真正的数组是10个项目,但它们是上面的复制和粘贴,数字已更改。我从文件中提取了一些广告并检查其中是否有任何广告是'默认'必须显示,将它们放在不同的数组中以供以后使用。
答案 0 :(得分:1)
我认为你只想要filter数组。
function Advert(data) {
this.isDefault = data.isDefault;
this.adID = data.adID;
this.adName = data.adName;
this.adDesc = data.adDesc;
this.adURL = data.adURL;
this.adFormat = data.adFormat;
this.adImageDSK = data.adImages ? data.adImages.adImageDSK : null;
this.adImageDEV = data.adImages ? data.adImages.adImageDEV : null;
}
$.getJSON("../json/adverts.json").done(function (data) {
var allAds = data.map(function (item) {
return new Advert(item);
});
var defaultAds = allAds.filter(function (ad) {
return ad.isDefault === 'true';
});
// ...
});