• 关于js数组的一道小考题


    网上看到的一道关于js数组的小考题,借此学习练习一下,也是拿来作为博客开篇之作吧!

    题目如下:

    给定一个随机数组,数组可能包含数组(也就是说数组元素可能为数组)。
    要求用js实现一个函数,返回该数组中所有元素,重复的要求去掉。
    例如:数组[2,3,[4,6,[3,8]],12,10],返回结果为:[2,3,4,6,8,12,10]。

    我的答案如下:(额外增加了排序)

     1         var arr = [2,3,[4,6,[3,8,[15,16,[17,18,[1,2,3,[19,20]]]]],[13,14],[5,6,7,11,9]],12,10];
     2         var NumArr = [];
     3         function isType (obj, type) {//判断类型
     4             return Object.prototype.toString.call(obj).indexOf('[object ' + type) == 0;
     5         }
     6         function sortNum(a,b){//升序
     7             return a - b;
     8         }
     9         function getArray(arr) {//去重
    10             var hash = {},
    11                 len = arr.length,
    12                 result = [];
    13             for (var i = 0; i < len; i++){
    14                 if (!hash[arr[i]]){
    15                     hash[arr[i]] = 1;
    16                     result.push(arr[i]);
    17                 } 
    18             }
    19             return result;
    20         }
    21         function pick(o){
    22             for(var n = 0, len = o.length; n<len; n++){
    23                 if(isType(o[n],"Number")){
    24                     NumArr.push(o[n]);
    25                 } else {
    26                     arguments.callee(o[n]);
    27                 }
    28             }
    29         }
    30         function part(o){//分发判断数组里的每个类型
    31             if(isType(o,"Number")){
    32                 NumArr.push(o);
    33             } else {
    34                 pick(o);
    35             }
    36         }
    37         for(var i = 0,l = arr.length; i<l; i++){
    38             part(arr[i]);
    39         }        
    40         NumArr = getArray(NumArr);//去重
    41         document.write(NumArr.sort(sortNum));//排序输出 NumArr [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
  • 相关阅读:
    CF1552 D. Array Differentiation
    CF1542 B. Plus and Multiply
    CF1543 D1. RPD and Rap Sheet (Easy Version)
    CF1555 E. Boring Segments(线段树+双指针)
    CF1513 D. GCD and MST
    hdu 6194 string string string
    CF1527 B2. Palindrome Game (hard version)
    DDD领域驱动设计落地实践(十分钟看完,半小时落地)
    【5分钟】W10 64bit系统本地安装postgresql 11
    程序员如何成为架构师
  • 原文地址:https://www.cnblogs.com/violinxliu/p/3777683.html
Copyright © 2020-2023  润新知