Can';t让此函数根据javaScript中的后续参数删除特定元素
我有一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。我基本上想使用后面的参数来确定最终从数组中拼接出什么Can';t让此函数根据javaScript中的后续参数删除特定元素,javascript,arrays,Javascript,Arrays,我有一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。我基本上想使用后面的参数来确定最终从数组中拼接出什么 function destroyer(arr) { var temp = [], j = 0; for(var i= 1; i < arguments.length; i++){ temp.push(arguments[i]); } while(j < arr.length){ if(temp[j] === arr
function destroyer(arr) {
var temp = [], j = 0;
for(var i= 1; i < arguments.length; i++){
temp.push(arguments[i]);
}
while(j < arr.length){
if(temp[j] === arr[j]){
arr.splice(j, 1);
}
j++;
}
return arr;
}
我刚拿回我原来的阵列 这应该是可行的,但它的大O(n^2),因为它需要搜索将被删除的元素
function destroyer(arr) {
var temp = Array.prototype.slice.call(arguments);
for (var i=1;i<temp.length;i++) {
for (var j=0;j<arr.length;j++) {
if (temp[i] === arr[j]) {
arr.splice(j, 1);
}
}
}
return arr;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3))
功能销毁程序(arr){
var temp=Array.prototype.slice.call(参数);
对于(var i=1;i这是一个Freecodecamp挑战吗?我似乎很熟悉
以下是我解决这个问题的方法
function destroyer(arr) {
var temp = [], j = 0;
for(var i= 1; i < arguments.length; i++){
temp.push(arguments[i]);
}
var resAr=[];
while(j < arr.length){
if(temp.indexOf(arr[j])===-1){
resAr.push(arr[j])
}
j++;
}
return resAr;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
功能销毁程序(arr){
var-temp=[],j=0;
for(var i=1;i
我建议使用一种更简单的方法,它不会改变原始数组。由于使用了散列,它还具有O(n)的优点
function notDestroyer(arr) {
var lookup = {};
var result = [];
for (var i = 1; i < arguments.length; i++) {
lookup[arguments[i]] = true;
}
for (var j = 0; j < arr.length; j++) {
if (!lookup[arr[j]]) {
result.push(arr[j]);
}
}
return result;
}
功能非破坏器(arr){
var查找={};
var结果=[];
for(var i=1;i
不确定预期结果是什么?如果参数[0]
以外的参数[0]
在参数[0]
数组中,请从参数[0]
数组中删除这些项?如果我调用destroyer([5,7,8],8)它是否返回[5,7]?需要关于输入和输出的更多信息…嘿,Jordan,我添加了一些更多的信息。这将起作用:函数销毁程序(arr){返回arr.filter(x=>[].indexOf.call(arguments,x)<0)}
什么是“big-O(n^2)”,我知道我可以用谷歌搜索它,但我想它可以作为一个附加的文档来回答这个问题。这在小数组上非常有效,但我的意思是,如果您的数组有1000000个元素,并且要删除这些1000000个元素,这将需要很长时间,如果您的第二个参数是连续的,就像在数组中一样,那么您可以通过array.splice(array.indexOf(temp[0]),temp.length找到第一个元素)是的!哇,所以我非常接近。我想这是相对的。有趣的是,我不知道为什么我会被否决。但我想会发生这种情况。但我肯定会查找indexOf()
谢谢!
function notDestroyer(arr) {
var lookup = {};
var result = [];
for (var i = 1; i < arguments.length; i++) {
lookup[arguments[i]] = true;
}
for (var j = 0; j < arr.length; j++) {
if (!lookup[arr[j]]) {
result.push(arr[j]);
}
}
return result;
}