我不數組這個關鍵字,爲什麼我得到這個錯誤:中的物件進行篩選方法
錯誤是:無法獲取的值「0」:對象爲空或未定義
,這是我的代碼:
var Box = function(width, height, type){
var top = 0,
right = 0;
this.width = width;
this.height = height;
this.position = {
top: top,
right: right,
set: function(top, right){
this.top = top;
this.right = right;
}
};
this.type = type;
this.area = this.width * this.height;
this.className = "box_" + this.width + "_" + this.height;};
var box01 = new Box(2, 2, "slideShow");
var box02 = new Box(2, 1, "clinics");
var box03 = new Box(1, 2, "articles");
var box04 = new Box(1, 1, "news");
var box05 = new Box(2, 1, "news");
var box06 = new Box(2, 1, "clinics");
var boxArray = [];
boxArray.push(box01);
boxArray.push(box02);
boxArray.push(box03);
boxArray.push(box04);
boxArray.push(box05);
boxArray.push(box06);
var BoxUtility = function(parentId) {
this.parentId = parentId;
this.boxList = Array.prototype.pop.apply(arguments);
Object.defineProperties(this, {
totalArea: {
get: function(){
var x = 0;
for(var i = 0, len = this.boxList.length; i <= len - 1; i++){
x = x + this.boxList[i].area;
};
return x;
}
},
});};
BoxUtility.prototype.positionCalculateMasonry = function(preDefinedRows, firstColumnWidth, restColumnWidth, itemIndex){
var firstColumnArea = preDefinedRows * firstColumnWidth,
restColumnArea = preDefinedRows * restColumnWidth,
firstColumnAreaRemained = firstColumnArea,
restColumnAreaRemained = restColumnArea,
Position = function(top, right){
this.top = top;
this.right = right;
this.restFirstWidth = firstColumnWidth - right;
this.restSecondWidth = restColumnWidth - right;
},
firstPosition = new Position(0, 0),
positionStack = [],
boxStack = [],
indexStack = [];
positionStack.push(firstPosition);
for(var i = itemIndex, len = this.boxList.length; i <= len - 1; i++){
if(this.boxList[i].area <= firstColumnAreaRemained){
var temp = positionStack.filter(function(el){
return (el.restFirstWidth >= this.boxList[i].width);
});
} else {
};
};};
var x = new BoxUtility(clinica ,boxArray);
x.positionCalculateMasonry(5, 3, 2, 0);
我得到這個錯誤在這裏:
return (el.restFirstWidth >= this.boxList[i].width);
相信其對經過該鍵字中的過濾方法
有幫助嗎?感謝
嘗試製作成'this'回調外篩選的參考。走着瞧吧。 – 0x499602D2
感謝您的解決方案解決了它,但我們如何通過回調函數內部? –
只需在'.filter'調用之前執行'var self = this;',並且在回調中看到'this'的地方將其替換爲'self'。 – 0x499602D2