1. 找出数组 arr 中重复出现过的元素
function duplicates(arr) { var result = []; var count = []; for (var i=0;i<arr.length;i++) { if(count[arr[i]]) {//count用来记录数组中元素出现的次数,key是元素,value是次数。 count[arr[i]]++; } else { count[arr[i]]=1; } } for (var i=0;i<count.length;i++) { if (count[i]>1) { result.push(i);//这里要传入的是元素也就是key } } return result; }
function duplicates(arr) { var result = []; arr.forEach(function(elem){ if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){ result.push(elem); } }); return result; }
2. 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
function square(arr) { var result = []; arr.forEach(function(e) { result.push(e*e); }); return result; }
function square(arr) { return arr.map(function(e) { return e*e; }); }
3. 在数组 arr 中,查找值与 item 相等的元素出现的所有位置
function findAllOccurrences(arr, target) { var result = []; arr.forEach(function(item,index,arr) { if (item==target) { result.push(index); } }); return result; }
参考别人的:
function findAllOccurrences(arr, item) { return arr.map(function(e, index) { return e === item ? index : -1; /* 样例返回结果为[ -1, -1, -1, -1, -1, -1, -1, 0, 6 ] */ }).filter(function(i) { return i !== -1; /* 过滤掉 i === -1 的情况 */ }) }
// ES6箭头函数版 const findAllOccurrences = (arr, item) => arr.map((e, index) => e === item ? index : -1) .filter(i => i !== -1);
这个比较简洁的也可以实现。
function findAllOccurrences(arr, target) { return arr.map(function(item,index,arr) { if (item==target) { return index; } }); }
4.