2016-02-18 40 views
0
我的过滤器功能的短版

好,我有这方面的工作方法来删除文件,如果他们的ID是IDS的数组中:寻找使用JS

deleteFiles(arrayOfIds) { 
     let allFiles; 
     for (let i = 0; i < arrayOfIds.length; i++) { 
      allFiles = this.state.allFiles.filter((file) => { 
       return file.id !== arrayOfIds[i]; 
      }); 
     } 
     this.setState({allFiles}); 
    } 

它的工作原理,但什么是只能用较短的版本lodash或香草JS?

感谢您的帮助。

回答

1

这样的事情应该工作:

deleteFiles(arrayOfIds) { 
     this.setState({ 
      allFiles: this.state.allFiles.filter( 
       file=> arrayOfIds.indexOf(file.id) === -1 
     )}); 
    } 

它使用[].indexOf()避免内循环,内联其他的样板,以简化代码。

+0

我认为你需要'indexOf'内的'file.id' –

+0

@RogierSpieker:好眼睛!固定。 – dandavis

+0

谢谢@dandavis ...它使用返回arrayOfIds.indexOf(file.id)=== -1; – Gab