使用JS寻找我的过滤器功能的较短版本

时间:2016-02-18 21:49:32

标签: javascript arrays filter reactjs lodash

好的我有这个工作方法来删除文件,如果他们的id在Ids数组中:

   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或Vanilla JS的短版本是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

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

它使用[].indexOf()来避免内部循环,并内联另一个样板来简化代码。