题目:移除数组 arr 中的所有值与 item 相等的元素,并将结果返回 。
要求:1:直接在给定的 arr 数组上进行操作。
2:数组顺序不可打乱。
如:function removeWithoutCopy(arr,item)
{
/*
your code
*/
return arr;
}
console.log(removeWithoutCopy([3,1,4,2],2));//输出[3,1,4]
来试试吧!
9 回答
慕后森
TA贡献1802条经验 获得超5个赞
for (var i=0;i<arr.length;i++){
var items=arr[i];
if(items==item){
arr.splice(i,1);
}
}
ABOUTYOU
TA贡献1812条经验 获得超5个赞
1 function removeWithoutCopy(arr,item) 2 { 3 arr_ = [] 4 arr.forEach(function(it){ 5 if(!function(a,b){ 6 return JSON.stringify(a) == JSON.stringify(b); 7 }(item,it)){ 8 arr_.push(it); 9 } 10 }); 11 return arr_; 12 };
见笑。
繁星coding
TA贡献1797条经验 获得超4个赞
1 function removeWithoutCopy(arr,item) 2 { 3 var len = arr.length; 4 var eq = function(a,b){ 5 return JSON.stringify(a) == JSON.stringify(b); 6 }; 7 for(var i =len-1;i>=0;i--){ 8 if(eq(arr[i],item)){ 9 arr.splice(i,1); 10 } 11 } 12 return arr; 13 };
如果一定在原数组操作,我会从后向前遍历。
三国纷争
TA贡献1804条经验 获得超7个赞
@路人第十一: 只是不知道你数组内的元素是什么所以才那么写。如果是对象,不能通过JSON.stringify来比的。因为
var eq = function(a,b){ return JSON.stringify(a) == JSON.stringify(b); }; var a = { x:1, y:2 }; var b = { y:2, x:1 }; console.log(eq(a,b));//false
但实际上述对象a,b是相同的。至于对象怎么比较,就扯远了。如果是基本类型,上述应该没问题。
不过关键点应该在从后向前遍历,不是吗?
添加回答
举报
0/150
提交
取消