zoukankan      html  css  js  c++  java
  • 一些常见的js编程题

    1、实现数组乱序

    var a = [1,2,3,4,5,6,7,8,9,0,12,23,45,90];
    a.sort(function (a,b) {
        var sign = (Math.random()>0.5) ? 1 : -1;
        return (a-b)*sign;
    });

    2、reduce的使用

    //有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和
    var b = [1,2,3,4,5,6,7,8,9,10];
    var sum = b.slice(0,10).reduce(function (pre,cur) {
        return pre + cur;
    },0);

    3、有一个长度为100的数组,值为其所在位置的索引

    var a = new Array(100);
    
    a = a.join(",").split(",").map(function(item, index) {
        return index;
    });

    4、如何消除数组中重复的元素

    function deRepeat(arr) {
        let newArr = [];
        arr.map(function (item) {
            if(newArr.indexOf(item) === -1){
                newArr.push(item);
            }
        });
        return newArr;
    }

    5、对象的深浅拷贝

    浅拷贝:只是拷贝了基本类型的数据,对于数组或对象的话,拷贝的只是其内存地址,因此存在原对象被篡改的可能;

    function copy(p) {
        let c = {};
        for(let i in p) {
            c[i] = p[i];
        }
        return c;
    }

    深拷贝

    //深拷贝
    function deepcopy(p,c) {
        let d = c || {};
        for(let i in p) {
            if(typeof p[i] === 'object'){
                d[i] = (p[i].constructor === Array) ? []:{};
                deepcopy(p[i],d[i]);
            }else {
                d[i] = p[i];
            }
        }
        return d;
    }

    ps.Object.assign()方法是浅拷贝。

  • 相关阅读:
    structs2---OGNL表达式
    六种获取配置properties文件的方法
    java poi导出Excel 总结
    Linux中发布项目的一些命令笔记
    JavaScript 闭包
    常见数据库连接方式
    Docker(五):镜像
    Docker(四):docker的安装
    Ubuntu命令
    Docker(三):Docker的基本概念
  • 原文地址:https://www.cnblogs.com/shuqicui/p/2017-6-27.html
Copyright © 2011-2022 走看看