• 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. 

  • 相关阅读:
    [ZJOJ] 5772【NOIP2008模拟】今天你AK了吗
    exgcd扩展欧几里得求解的个数
    Dinic当前弧优化 模板及教程
    [Luogu] P3907 圈的异或
    提升——树形DP
    C++ 优先队列
    C++ 洛谷 P2458 [SDOI2006]保安站岗 from_树形DP
    C++ 洛谷 2014 选课 from_树形DP
    C++ luogu1352没有上司的舞会 from_树形DP
    浅说——树形DP
  • 原文地址:https://www.cnblogs.com/sarah-wen/p/10753442.html
Copyright © 2020-2023  润新知