//如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1 function indexOf(arr, item) { if(Array.prototype.indexOf){ return arr.indexOf(item) }else{ for(var i=0;i<arr.length;i++){ if(arr[i] === item){ return i; } } } return -1 } indexOf([ 1, 2, 3, 4 ], 3)
//移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果 //返回新的数组 function remove(arr, item) { var res = []; for(var i=0;i<arr.length;i++){ if(arr[i]!==item){ res.push(arr[i]); } } return res; } remove([1, 2, 3, 4, 2], 2)
//移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行 //操作,并将结果返回 function removeWithoutCopy(arr, item) { for(var i=0;i<arr.length;i++){ if(arr[i] == item){ arr.splice(i,1) i--; } } return arr }
//合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组 function concat(arr1, arr2) { var res = []; if(arguments.length>0){ for(var i=0;i<arguments.length;i++){ if(arguments[i] instanceof Array){ res.push(arguments[i]) } } } return res.join(',').split(',') }
//在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回 //新的数组 function insert(arr, item, index) { var a = [].concat(arr) a.splice(index, 0, item) return a }
//统计数组 arr 中值等于 item 的元素出现的次数 function count(arr, item) { var num = []; for(var i=0;i<arr.length;i++){ if(arr[i] == item){ num.push(arr[i]) } } return num.length; }
//找出数组 arr 中重复出现过的元素 function duplicates(arr) { var res = []; var db = []; for(var i=0;i<arr.length;i++){ if(!db[arr[i]]){ db[arr[i]] = 1; continue; }else{ db[arr[i]]++; } } for(var j=0;j<db.length;j++){ if(db[j]>1){ res.push(j) } } return res }