zoukankan      html  css  js  c++  java
  • 关于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]
  • 相关阅读:
    Pandas获取本地csv文件到内存中
    波士顿房价数据集可视化
    tensorflow之数据集调用(波士顿房价数据集)
    查单词
    censoring
    字符串大师
    Parity game
    前缀和
    String
    Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/violinxliu/p/3777683.html
Copyright © 2011-2022 走看看