js循环套循环怎么能减少代码量

clipboard.png

表单操作 删除tableData的数据

阅读 2.8k
6 个回答

试试这个

class Foo{
    constructor(){
        this.arr_select=[3,1,2,6,8,10,5];
        this.tableData=[{id:12},{id:2},{id:10},{id:1},{id:3},{id:5},{id:4}]
    }
    delAll(){        
     this.tableData=this.tableData.filter(j=>!this.arr_select.find(v=>v===j.id,this))
    }
}
let foo = new Foo();
foo.delAll();
console.log(foo.tableData)

原生的es6有一个findIndex你查一下,还有想问下你做的是什么操作,你只写了这段代码,不容易看到需求。

你这种本来就是需要两个不同对象实例值比较的情况2层循环(分别遍历两个不同对象的元素)是少不了的。

var select = [1];
var table = [{id: 1}, {id: 2}];
table = table.filter(function(i){ return select.indexOf(i.id) == -1 })
this.tableData = this.tableData.filter((n) => !(this.arr_select.findIndex((m) => m == n.id) > -1))

clipboard.png
谢谢大神们的回答,虽说我这个思路还没有缕清

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题