删除每个元素后,我想得到所有数组元素的所有组合
例如:
输入:[6,5,3,4]
输出应为:[[5,3,4],[6,3,4],[6,5,4],[6,5,3]]
不使用任何库
我在这段代码中工作,但没有输出正确的结果
var arrs = [[]];
function doIt(arr) {
for (var i = 0; i < arr.length; i++) {
arrs[i] = arr.filter(function (item) {
return item != i
});
}
console.log(JSON.stringify(arrs));
}
doIt([4, 3, 1]);
最佳答案
您可以使用嵌套方法迭代给定的数组和映射数组,而不使用外部索引的元素。
var array = [6, 5, 3, 4],
result = array.map((_, i) => array.filter((_, j) => i !== j));
console.log(result);
在代码中,需要检查过滤器回调的索引而不是值。
var arrs = [[]];
function doIt(arr) {
for (var i = 0; i < arr.length; i++) {
arrs[i] = arr.filter(function (item, j) {
// ^ use index instead of value
return j != i;
// ^ here
});
}
console.log(arrs);
}
doIt([4, 3, 1]);