1. 如何移除一个数组里面重复的元素,请写出相应的代码。
方法1:遍历数组中的元素,依次两两比较,如果相等,则把后面一个元素从数组中删除。示例如下:
var arr = [1, 1, 2, 4, 2]; for (var i = 0; i < arr.length; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1);// 删除数组元素 j--; } } } console.log(arr);// 输出[1, 2, 4];
方法2:创建一个新数组,把原数组中的元素逐个添加到新数组中。判断新数组中是否已经包含原数组中的元素,如果没有,则把原数组中的元素添加到新数组;如果已经存在,则不添加。示例如下:
var arr = [1, 1, 2, 4, 2]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) === -1) { newArr.push(arr[i]); } } console.log(newArr);// 输出[1, 2, 4];
2. forEach()方法与map()方法有和异同?
(1)相同点。
①都是循环遍历数组中的每一项。
②只能遍历数组。
(2)不同点。
① map()方法会分配内存空间存储新数组并返回,forEach()方法不会返回数据。
② forEach()方法允许callback更改原始数组的元素。map()方法不改变原数组。