2016-11-12 141 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'; 
    }); 
} 

让我知道它是否工作:)