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项目控制台中文乱码
