review javascript 14:数组去重
2017-04-24 本文已影响16人
蝴蝶结199007
(1)题目:写一个数组去重的例子
(2)错误答案
init();
function init(){
arrH1();
}
/**
* 问题:
* (1)传入参数num会显示一个错误 Unused parameter num(未使用参数num)
* (2)局部变量num 显示 Duplicate declaration(重复的声明)
* (3)i 这个变量显示 variable i implicitly declared(i 隐式声明的变量)
* (4)indexOf使用错误
*
* ----------indexOf begin----------
* indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
* stringObject.indexOf(searchvalue,fromindex)
* ----------indexOf end----------
* @param num
* @returns {Array}
*/
function arrH1(num){
var num = [1,2,5,6,4,2,6,7];
var newArr = [];
for(i=0;i < num.length;i++){
if(newArr.indexOf(num[i]) == -1){
newArr.push(num[i]);
}
}
return newArr;
}
(3)正确答案
init();
function init() {
var arr1 = [1, 2, 3, 4, 1, 2, 3];
//var arr2 = [a, 2, 3];//Uncaught ReferenceError: a is not defined
var arr2 = ['a', 2, 3, 'a', '3'];//['a',2,3]
filterRepeat(arr1);
filterRepeat(arr2);
}
/**
* 需求:我想实现一个功能,传入一个数组,然后去重
* 分析:
* (1)定义一个函数
* (2)入参:数组
* (3)返回值:数组
*
* 难点:
* (1)如何去重
*/
/**
* 去重数组中的重复对象
*
* @param arr 传入的参数,必须是个数组
* @returns {Array} 去重之后的数组
*/
function filterRepeat(arr) {
var rtn = new Array();
for (var i = 0; i < arr.length; i++) {
if (!isExist(arr[i], rtn)) {
rtn.push(arr[i]);
}
}
console.log(rtn);
return rtn;
}
/**
* 判断一个值在数组中是否存在
*
* @param val 值
* @param arr 数组
* @returns {boolean} 是否存在,存在则返回true,不存在则返回false
*/
function isExist(val, arr) {
var rtn = false;
for (var i = 0; i < arr.length; i++) {
//一旦判断数据存在,则结束循环
// if (val == arr[i]) {
// rtn = true;
// break;
// }
//对类型进行判断
if (val === arr[i]) {
rtn = true;
break;
}
}
return rtn;
}
function isExist2(val, arr) {
for (var i = 0; i < arr.length; i++) {
//一旦判断数据存在,则结束循环
if (val === arr[i]) {
return true;
}
}
return false;
}