JS操作数组-2

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. 

猜你喜欢

转载自www.cnblogs.com/sarah-wen/p/10753442.html