几个数组练习题

0-求数组最大值

    <script>
    var arr=new Array();
    arr[0]=22;
    arr[1]=555555;
    arr[2]=99999999;
    function GetMax(arr){
        var max=arr[0];
        for(var i=0;i<=arr.length-1;i++){
            if(arr[i]>max){
            max=arr[i];
            }
        }
        alert(max);
    }
    GetMax(arr);
    </script>

1-将字符串数组元素反转                        //arr.reverse();

    <script>//①直接反转
    var arr=new Array();
    arr[0]=0;
    arr[1]=1;
    arr[2]=2;
    for(var i=0;i<=arr.length-1;i++){
    alert(arr[arr.length-1-i]);
    }
    </script>
    
    <script>//②两两对换,减少一半循环
    var arr=new Array();
    arr[0]='A';
    arr[1]='B';
    arr[2]='C';
    function Reverse(arr){
        for(var i = 0;i<arr.length/2;i++){
            var temp = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-i-1] = temp;    
        }
        return arr;
    }
    alert(Reverse(arr));
    </script>

2-将字符串数组输出为以“|”分割的形式            //arr.join("|");

   <script>
    var arr=new Array();
    arr[0]='1';
    arr[1]='2';
    arr[2]='3';
    function Join(arr){
        var s=arr[0];
        for(var i=1;i<=arr.length-1;i++){
        s+="|"+arr[i];
        }
        return s;
    }
    alert(Join(arr));
    </script>

3-把[1, 3, 5, 7, 9]变换成整数13579            //arr.reduce(function(x,y){return 10*x+y;});   

    <script>
    var arr = [1, 2, 3, 4];
    var plus = function(arr){
        for(var i=0;i<arr.length-1;i++){
        arr[i+1]+=arr[i]*10;
        }
        return arr[arr.length-1];
    }
    alert(plus(arr));
    </script>

4-把一个字符串“13579”先变成Array———[1, 3, 5, 7, 9],再将数组变换成整数13579。            //parseInt();

   <script>
    var str = "13579";
    function string2int(s) {
    return s.split('').map(function(x){        //用split()方法把一个 字符串 分割成 字符串数组。
    return x.charCodeAt(0) - '0'.charCodeAt(0);}).reduce(function(x, y){    //charCodeAt()方法返回 指定位置 的字符的 Unicode 编码
    return x*10+y; });
    }
    alert(string2int(str));
    </script>

***字符串方法 Method 描述:
    charAt() 返回指定索引位置的字符
    charCodeAt() 返回指定索引位置字符的 Unicode 值
    concat() 连接两个或多个字符串,返回连接后的字符串
    fromCharCode() 将字符转换为 Unicode 值
    indexOf() 返回字符串中检索指定字符第一次出现的位置
    lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
    localeCompare() 用本地特定的顺序来比较两个字符串
    match() 找到一个或多个正则表达式的匹配
    replace() 替换与正则表达式匹配的子串
    search() 检索与正则表达式相匹配的值
    slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
    split() 把字符串分割为子字符串数组
    substr() 从起始索引号提取字符串中指定数目的字符
    substring() 提取字符串中两个指定的索引号之间的字符
    toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
    toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
    toLowerCase() 把字符串转换为小写
    toString() 返回字符串对象值
    toUpperCase() 把字符串转换为大写
    trim() 移除字符串首尾空白
    valueOf() 返回某个字符串对象的原始值

5-规范化数组,输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']

  <script>
    var arr = ['adam', 'LISA', 'barT'];
    alert(arr.map(function(str){
    return str[0].toUpperCase()+str.slice(1).toLowerCase();
    }));
    </script>

6-找出连续n个合数(仅由存在性算法导出,结果非最优)

<script>    
    function creat(n){
        var arr1 = [];
        var arr2 = [];
        for(var i = 1;i<=n+1;i++){
            arr1.push(i);
        }
        var k = arr1.reduce(function(x,y){     //k = 1*2*3*...*n*(n+1) = (n+1)!
            return x*y;
        });
        for(var i = 2;i<=n+1;i++){
            arr2.push(k+i);                    //连续n个合数(k+2),(k+3),(k+4),...,(k+n+1)
        }
        return arr2;
    }
    var arr = creat(10);
    alert(arr);
    </script>

7-编写一个产生斐波那契数列的函数            //0 1 1 2 3 5 8 13 21 34 ...

    <script>
    function fib(max) {
        var t,a = 0,b = 1,arr = [0, 1];
        while (arr.length < max) {
            t = a + b;
            a = b;
            b = t;
            arr.push(t);
        }
        return arr;
    }
    alert(fib(10));                            // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
    </script>

 

posted on 2015-08-29 17:00  罗小夕  阅读(2202)  评论(0编辑  收藏  举报

导航