主要思想就是先从旧数组中取元素,一个个添加到新数组中,在添加的时候,与添加过的元素比较,如果相同,则不添加。
首先定义两个数组:
var arrA = new Array(1,23,43,64,1,23,5,8,3,5,9); var arrB = getNewArray(arrA); // 过滤函数 |
然后开始编写函数getNewArray()
function getNewArray(receiveArray) { var arrResult = new Array(); //定义一个返回结果数组. for (var i=0; i<receiveArray.length; i++){ if (/*在这里做i元素与所有判断相同与否, 调用函数check(arrResult, receiveArray[i]);*/){ arrResult.push(receiveArray[i]); // 添加该元素到新数组。如果if内判断为false(即已添加过),则不添加。 } } return arrResult; } |
然后编写判断函数check()
function check(receiveArray, checkItem) { var index = -1; // 函数返回值用于布尔判断 for (var i=0; i<receiveArray.length; i++){ if (receiveArray[i]==checkItem){ index = i; break; } } return index; } |
则在函数getNewArray()中的if应该写成:
check(arrResult, receiveArray[i]) == -1
//--------------------------------------------------------------------------------------------------------------------
好了,我们的目的达到了,合并以上代码即可。
var arrA = new Array(1,23,43,64,1,23,5,8,3,5,9);
var arrB = getNewArray(arrA); // 过滤函数
function getNewArray(receiveArray) { var arrResult = new Array(); //定义一个返回结果数组. for (var i=0; i<receiveArray.length; i++){ if (check(arrResult, receiveArray[i]) == -1){ //在这里做i元素与所有判断相同与否 arrResult.push(receiveArray[i]); // 添加该元素到新数组。如果if内判断为false(即已添加过),则不添加。 } } return arrResult; } function check(receiveArray, checkItem) { var index = -1; // 函数返回值用于布尔判断 for (var i=0; i<receiveArray.length; i++){ if (receiveArray[i]==checkItem){ index = i; break; } } return index; } |