在JavaScript中相交的多维数组

威廉·哈利姆(Willyanto Halim)

假设我有1个多维数组,并且我想排除JavaScript中不相等的值。

这是示例数组。

var filter = ["big_number", "odds_number"];
var arrays = {
    "first" : {
        "big_number" : [50,51,52],
        "odds_number" : [39,41,51,53]
    },
    "second" : {
        "big_number" : [61,62,63,64,65,70,72,73],
        "odds_number" : [13,15,17,19,61,63,65,73]
    }
};

我想将该数组转换为这样。

var new_arrays = {
    "first" : [51],
    "second" : [61,63,65,73]
};

这是我的代码

var newArray = {
    "first" : [],
    "second" : []
};
for (var k in arrays){
    if (arrays.hasOwnProperty(k)) {
        for(var f=0; f<filter.length; f++) {
            newArray[k].push(arrays[k][filter[f]].filter(value => -1 !== arrays[k][filter[f]].indexOf(value))));
        }
   }
}
console.log(newArray);

其实我可以做这段代码

var newArray = {
    "first" : [],
    "second" : []
};
for (var k in arrays){
    if (arrays.hasOwnProperty(k)) {
        newArray[k].push(arrays[k]["big_number"].filter(value => -1 !== arrays[k]["odds_number"].indexOf(value))));
    }
}
console.log(newArray);

但是我需要通过转换它filter variable我无法使用filter[0] and filter[1],因为该值可以动态更改,并且可能超过数组中的2个值。

防区

这是一个小交叉片段:

function intersect(a,b){
    b.slice()
    return a.filter(item=>{
        if(b.includes(item)){
            b.splice(b.indexOf(item),1)
            return true
        }
    })
}

使用它,您可以轻松地做到这一点:

function intersect(a,b){
	b.slice()
	return a.filter(item=>{
		if(b.includes(item)){
			b.splice(b.indexOf(item),1)
			return true
		}
	})
}

var filter = ["big_number", "odds_number"];
var output={}
var arrays = {
    "first" : {
        "big_number" : [50,51,52],
        "odds_number" : [39,41,51,53]
    },
    "second" : {
        "big_number" : [61,62,63,64,65,70,72,73],
        "odds_number" : [13,15,17,19,61,63,65,73]
    }
};
for(x in arrays){
    output[x]=arrays[x][filter[0]]
    for(let i=1;i<filter.length;i++){
        output[x]=intersect(output[x],arrays[x][filter[i]])
    }
}
console.log (output) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章