可以't获取此函数以删除基于javaScript中后续参数的特定元素
Can't get this function to remove specific elements based on subsequent arguments in javaScript
我有一个初始数组(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[j]){
arr.splice(j, 1);
}
j++;
}
return arr;
}
更新如果我的描述含糊不清的话,我忘了说明它将如何执行。
destroyer([1, 2, 3, 1, 2, 3], 2, 3) //should return [1, 1]
我刚找回原来的数组?!
这是一个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));
这应该可以工作,但它的big-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))
我建议一种更简单的方法,它不会改变原始数组。由于使用了散列,因此还具有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;
}
相关文章:
- 用于回调的javascript参数
- 我不能使用变量作为javascript参数
- Ajax.ActionLink-传递javascript参数
- 需要Javascript参数帮助
- NS_ERROR_XPC_BAD_CONVERT_JS:无法转换JavaScript参数arg 0[nsIDOMWind
- JavaScript参数验证
- 变量与表达式作为Javascript参数
- JavaScript参数对象不起作用
- 带有javascript参数的ASPNET MVC RenderAction
- IE JavaScript参数和填充输入字段
- 传递Javascript参数并分配给变量
- Jquery函数中提供Javascript参数
- 使用Play动态更改Javascript参数
- 函数中的 JavaScript 参数
- 本地化字符串中的 JavaScript 参数
- JQuery 函数突然停止工作,转换 Javascript 参数时出错
- JavaScript 参数对象 MDN 指南
- JavaScript 参数未跨处理程序传递
- 即时更改 Javascript 参数
- 附加到 JavaScript 参数中的所有值