我想从arguments
中传递的array
中删除destroyer
,arguments
传递给function destroyer(arr) {
var args = Array.prototype.slice.call(arguments); //turns arguments into arrays
function checkArgs() {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < args.length; j++) {
if (arr[i] == args[j]) {
delete arr[i];
}
}
}
}
return arr.filter(checkArgs);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3); //Remove 2nd, 3rd, etc arguments from first argument...??
。
select regexp_extract(concat("columna2=blablablatest",'\073'),'.*a2=?(.*?)\073',1);
答案 0 :(得分:2)
.filter
回调要求您return
过滤结果中的内容。
来自 MDN :
返回值
包含通过测试的元素的新数组。如果不 元素通过测试,将返回一个空数组。
function destroyer(arr) {
var args = Array.prototype.slice.call(arguments); // turns arguments into arrays
function checkArgs() {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < args.length; j++) {
if (arr[i] == args[j]) {
delete arr[i];
}
}
}
// You have to return something in the filter callback
return arr;
}
return arr.filter(checkArgs);
}
//remove 2nd, 3rd, etc arguments from first argument
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
console.log(destroyer([1, 2, 3, 1, 2, 3], 3));
答案 1 :(得分:0)
.filter
需要return
值作为过滤值。此外argumnents
还包含位置array arr
的{{1}},因此您必须从位置0
开始。
1
答案 2 :(得分:-1)
这是过滤器的略微简化版本。还有其他方法可以优化它。假设基于0的索引。
function destroyer(arr) {
var args = Array.prototype.slice.call(arguments); // turns arguments into arrays
return args[0].filter(function(item, index) {
return args.indexOf(index) < 0;
});
}
//remove 2nd, 3rd, etc arguments from first argument
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
&#13;