我现在大三。前几天做了一下阿里巴巴春季面试题,其中有一道是:编写一个函数,传入一个数组,如果有相同的元素,删除元素。返回数组
思考了一下,我的步骤很简单
(1)先把数组排序。
(2)如果第i个和i+1个相同,则删掉其中一个元素就可以了
先贴代码如下:
function delRepeat(arr){
arr.sort(function(a,b){
return a>b? 1:-1;
});
for(var i = 0;i<arr.length;i++){
if(arr[i] === arr[i+1]){
arr.splice(i,1);
}
}
return arr;
}
分析:利用数组方法 sort().但是sort()方法不能准确按照数字大小返回,因为这个方法是按照字典序排列。所以return a>b? 1:-1;这一句来保证数组从小到大排列。
接下来判断如果第i个和i+1个相同,则用数组的splice()方法。第一个参数是删除元素的开始位置,第二个参数是删除的个数。(返回一个包含被移除元素的数组)。
好了,这样就简单实现了。
示例: var arr = [1,23,4,32,4];
浏览器返回: delRepeat(arr);
[1, 4, 23, 32]
问题:如果题目要求不能排序,怎么做我就没思路了…………