2016-02-26 30 views
0

刪除我在jQuery的字典對象,其中包含這樣的數據:無法從字典中的jQuery

var category = []; 
var brand = []; 
var parameter = []; 

category = $("input:checkbox[name=category]:checked").map(function() { 
    return this.value; 
}).get(); 

brand = $("input[type='radio']:checked").map(function() { 
    return this.value; 
}).get(); 

parameter.push({ 
    brand: brand, 
    category: category, 
}); 

然後我試圖刪除從參數dictonary的鍵值對類似這樣的,但沒有得到刪除:

var brand = "something" 
delete parameter.brand 
console.log(parameter) 

參數字典看起來像這樣

Array[2] 
0: Object 
brand: Array[1] 
0: "spykar" 
length: 1 
__proto__: Array[0] 
category: Array[1] 
0: "Men Jeans" 
length: 1 
__proto__: Array[0] 
__proto__: Object 
1: Object 
brand: Array[1] 
0: "Madame" 
length: 1 
__proto__: Array[0] 
category: Array[1] 
__proto__: Object 
length: 2 
__proto__: Array[0] 

編輯

按Zamuka告訴我,我試圖將濾鏡陣列這樣

$table.on('click', '.remove', function() { 
       var brand = $(this).closest('td').prev('td').prev('td').html(); 
       console.log(brand) 
       $(this).closest('tr').remove(); 
       parameter = parameter.filter(isItemOk); 

       function isItemOk(item) { 
       return item.brand != brand; 
      } 

      console.log(parameter) 
     }); 

我怎樣可以刪除包含的多個鍵值對的參數字典中的特定品牌和相應的類別品牌和類別?

+1

'delete parameter [0] .brand' –

+1

可能重複的[基於鍵值查找和刪除數組中的對象](http://stackoverflow.com/questions/21659888/javascript-find-and-remove-object-in-array-based-on-key-價值) – JJJ

+0

參數[0]刪除只有第一個...我有品牌和類別的多個鍵值對@ RajaprabhuAravindasamy –

回答

1

描述你要保持和篩選陣列哪些項目

// if brand is string 
function isItemOk(item) { 
    return item.brand != 'something'; 
} 

parameter = parameter.filter(isItemOk); 

// if brand is array _that contains_ a string 
function isItemOk(item) { 
    return item.brand.indexOf('something')==-1; 
} 

或相同的代碼有點短:

parameter = parameter.filter((item)=>item.brand!='something'); 
+0

它工作正常,但記錄數據兩次 –

+0

啊..忘了,jQuery給你不是一個數組,但數組類似的對象。使用.map(someFunctionHere).toArray() – zamuka

+0

請編輯您的解決方案 –

0

如果你想從數組中刪除一個項目,首先,你應該得到這個元素的索引。然後你可以調用delete,但它實際上會用undefined替換數組元素。要完全刪除元素,使用拼接:

var arr = ['qwe', 'rty'] 
var i = arr.indexOf('qwe') 
arr.splice(i, 1); //['qwe'] 
console.log(arr); //['rty'] 

UPDATE

不能從哈希值被刪除。你應該找到對應值的鍵:

parameter = { brand: 'SomeBrand', category: 'Any' } 
var brand = "SomeBrand" 

for (var key in parameter) { 
    if (parameter.hasOwnProperty(key) && parameter[key] === brand) { 
    delete parameter[key] 
    } 
} 

console.log(parameter); //Object {category: "Any"} 
+0

但品牌陣列是參數字典的一部分..我想在這裏是刪除相應的品牌和從參數字典 –

+0

我已經更新了我的答案。 –

+0

它沒有進入if條件裏面我試着console.log(參數[key])然後打印Object {brand:Array [1],category:Array [1]} –