我有一个像下面的对象数组
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"
我想从数组中删除包含key:testValue
的元素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;
});
但它没有删除。是什么方法做到了? 这是完整的代码。我可以看到大小为2的myValues数组。如果我打印myValues,如果阻止它为空。 代码笔:http://codepen.io/developer301985/pen/woGBNg
答案 0 :(得分:1)
如果您想根据以下两个条件过滤数组:
canUpload
attr是假的type.key
等于' testValue' 所以如果return false
符合以下条件,您可能希望canUpload
:
myValues= myValues.filter(function(value) {
if(!value.canUpload)
return value.type.key === 'testValue';
else return false;
});
否则,您只想过滤type.key
等于' testValue' ,所以它将如下:
myValues= myValues.filter(function(value) {
return value.type.key === 'testValue';
});
答案 1 :(得分:0)
注意,如果传递给filter的回调函数返回true,则将保留元素而不是删除元素。因此,在您的情况下,当值为testValue
时,您应该返回false。
如果我理解正确,您想删除value.canUpload==false
和type.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';
});
}
让我知道它是否有效:)