JS 将对象数组a中不包含数组b里的元素的项去除
案例一:后台侧边栏菜单权限控制
var a = [ { name: "aa", children: [{ name: "aa1" }, { name: "aa2" }] }, { name: "bb", children: [{ name: "bb1" }, { name: "bb2" }] }, { name: "cc", children: [{ name: "cc1" }, { name: "cc2" }] }, { name: "dd", children: [{ name: "dd1" }, { name: "dd2" }] }, { name: "ee", children: [{ name: "ee1" }, { name: "ee2" }] }, ]; var b = ["aa1","aa2","cc1", "bb2","dd1" ]; //目标对象 var mune = [ { name: "aa", children: [{ name: "aa1" },{ name: "aa2" }] }, { name: "bb", children: [{ name: "bb2" }] }, { name: "cc", children: [{ name: "cc1" }] }, { name: "dd", children: [{ name: "dd1" }] }, ]; 解决: let mm = [] a.forEach(v => { let cc = [] for (let c = 0; c < v.children.length; c++) { let cv = v.children[c].name let f = b.find(s => s == cv) if (f) cc.push({ name: f }) } v.children = cc if (cc.length > 0) mm.push(v) }) console.log(mm) //最优解法: for (var i = 0; i < a.length; i++) { for (var j = 0; j < a[i].children.length; j++) { if (b.indexOf(a[i].children[j].name) == -1) { a[i].children.splice(j, 1); j--; } } if (a[i].children.length == 0) { a.splice(i, 1); i--; } }
案例二:
var a=[red] this.deviceList=[ { type: "red", deviceId: "C001", deviceNum: "设备故障", }, { type: "green", deviceId: "C002", deviceNum: "品质异常", }, { type: "blue", deviceId: "C003", deviceNum: "工艺异常", }, { type: "orange", deviceId: "C004", deviceNum: "缺料", }, ] for(let i=0;i<this.deviceList.length;i++){ var index=0 for(let j=0;j<a.length;j++){ if(a[j]===this.deviceList[i].type){ index=i } } this.deviceList.splice(index,1) }
上一篇:
IDEA上Java项目控制台中文乱码