2016-11-12 140 views
0

的元件I具有的對象類似下面過濾從對象陣列

Object[0] 

canUpload:false 
canBeRemoved:true 
    type:Object 
    allowMultiple:false 
    deleted:false 
    key:"testValue" 

Object[1] 
canUpload:true 
canBeRemoved:true 
type:Object 
    allowMultiple:false 
    deleted:false 
    key:"testValue2" 

我想刪除從數組,它包含鍵的元素的數組:測試值

var myValues = this.testData.data3; 

     if(!this.testData.canDownload){ 
    myValues= myValues.filter(function(value){ 
        if(!value.canUpload) 
         return value.type.key==='testValue'; 
       else return false; 
       }); 

但其不去除。什麼是正確的方式來做到這一點? 這裏是完整的代碼。我可以看到myValues數組的大小爲2。如果我打印myValues後,如果阻止其空。 典筆:http://codepen.io/developer301985/pen/woGBNg

+0

是它的JavaScript? –

+0

'return value.type.key ==='testValue1'' –

+0

'if.canUpload'在'if'條件下的預期結果是什麼? – guest271314

回答

1

如果你想兩個條件的基礎上,篩選陣列:

  • canUpload attr爲假
  • type.key等於'測試值'

所以你可能想要return falsecanUpload的情況下如下:

myValues= myValues.filter(function(value) { 
    if(!value.canUpload) 
    return value.type.key === 'testValue'; 
    else return false; 
}); 

否則,你只是想在type.key過濾等於「測試值」,所以這將是如下:

myValues= myValues.filter(function(value) { 
    return value.type.key === 'testValue'; 
}); 
+0

myValues在外部if塊後是空的。不知道如果我正確地做對 – javascriptlearner

+0

請確保'myValues'被解析爲對象數組,如果您可以在Codepen上獲得您的代碼以更好地闡明您的情況,那會更好。 –

+0

添加代碼筆http://codepen.io/developer301985/pen/woGBNg – javascriptlearner

0

注意,如果你傳遞到過濾器回調函數返回true ,該元素將被保留而不是被刪除。所以在你的情況下,當值爲testValue時,你應該返回false。

如果我理解正確,您想刪除value.canUpload==falsetype.key === 'testValue'的項目。然後否定是value.canUpload || value.type.key !== 'testValue'

var myValues = this.testData.data3; 

if (!this.testData.canDownload) { 
    myValues = myValues.filter(function(value) { 
     return value.canUpload || value.type.key !== 'testValue'; 
    }); 
} 

讓我知道它是否工作:)