2011-11-17 108 views
0

的JS數組所以我已經定義是這樣的刪除元素從對象

var myList = []; 

//I populate it like this 
myList.push({ prop1: value1, 
         prop2: value2, 
         prop3: value3 
}); 

是否可以從列表中刪除項目的基礎上,爲prop1值W/O通過數組搜索?

回答

1

不可以。您必須以某種方式遍歷數組,檢查其中每個對象的屬性,並在您點擊它們時執行刪除操作。

0

這是否幫助:

 
Array.prototype.remove = function(s) { 
    var i = this.indexOf(s); 
    if(i != -1) this.splice(i, 1); 
} 
+0

這並沒有幫助,因爲OP希望根據這些對象的屬性從數組中刪除對象。修改原生對象的原型也是一個值得懷疑的做法,儘管對這個問題的雙方都有很多爭論。 – JAAulde

1

在這裏你去:

myList = myList.filter(function (obj) { 
    return obj.prop1 !== value; 
}); 

其中value是,你對測試值。

現場演示:http://jsfiddle.net/LBYfa/

因此,如果'prop1'屬性的值等於您正在測試對,obj.prop1 !== value將評估爲false的價值和該元素將被過濾掉。

+0

'Array.prototype.filter'不適用於許多廣泛部署的瀏覽器。 (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter)請注意,建議的填充代碼的確如我所說的那樣做 - 循環數組。 – JAAulde

+0

@JAAulde [你是什麼意思?](https://github.com/kriskowal/es5-shim)':P' –

+0

哈哈,注意編輯我的評論:) – JAAulde

0

是否需要myList有整型索引?你可能會使用key => value對 - 也就是說,一個以prop1的值爲關鍵字的關聯數組? prop1有多可能是獨一無二的?如果不太可能,請考慮實施多圖。

相關問題