zoukankan      html  css  js  c++  java
  • Javascript 数组

    1、数组的创建

    1 var arr1 = new Array(); //创建一个数组
    2 var arr2 = new Array(5); //创建一个数组并指定长度,注意不是上限,是长度
    3 var arr3 = new Array(1,3,5,7,9); //创建一个数组并赋值
    4 var arr4 = [2,4,6,8,10];    

    要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。

    2、数组的元素的访问

    1 var testGetArrValue=arrayObj[1]; //获取数组的元素值
    2 arrayObj[1]= "这是新值"; //给数组元素赋予新的值

    3、数组元素的字符串化

    arrayObj.join(separator); 返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

    1 var arr = new Array(1,3,5,7,9);
    2 arr.join("-");   //输出1-3-5-7-9

    3、数组元素的添加

    arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

    arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

    arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。

    1 var arr = new Array(1,3,5,7,9);
    2 document.writeln(arr.join("-"));   //输出1-3-5-7-9
    3 alert(arr.push(11)); //在末尾添加
    4 document.writeln(arr.join("-"));   //输出1-3-5-7-9-11
    5 arr.unshift(0); //在头部添加
    6 document.writeln(arr.join("-"));   //输出0-1-3-5-7-9-11
    7 arr.splice(2,0,2,4);  //在位置为2之后插入数据2和4
    8 document.writeln(arr.join("-"));   //输出0-1-2-4-3-5-7-9-11

    4、splice用法

    javascript 中的 splice 方法很强大,它可以用于插入、删除或替换数组的元素。
    下面来一一介绍!

    1. 删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
    2. 插入:向数组指定位置插入任意项元素。三个参数,第一个参数(其实位置),第二个参数(0),第三个参数(插入的项)
    3. 替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

    splice方法返回一个数组,该数组包含删除的项目,如果没有删除的项目,则返回一个空数组

     1 var lang = ["php","java","javascript"];
     2 //删除
     3 var removed = lang.splice(1,1);
     4 alert(lang); //php,javascript
     5 alert(removed); //java ,返回删除的项
     6 //插入
     7 var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入
     8 alert(insert); //返回空数组
     9 alert(lang); //asp,php,javascript
    10 //替换
    11 var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项
    12 alert(lang); //asp,c#,ruby,javascript
    13 alert(replace); //php,返回删除的项

    5、数组元素的删除

    arrayObj.pop(); //移除最后一个元素并返回该元素值

    arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移

    arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

    6、数组的截取和合并

    arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

    arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

    7、数组的拷贝

    arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向

    arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向

    8、数组元素的排序

    arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址

    arrayObj.sort(); //对数组元素排序,返回数组地址

    下面看看sort方法:

    1 var arr=[3,1,4,10,5];
    2 alert(arr) //输出 3,1,4,10,5
    3 
    4 arr.sort();
    5 alert(arr); //输出1,10,3,4,5

    这里对数组排序后的结果,并没有按照数字大小进行排序,将数组元素看成一个字符串,每次取字符串的一位进行比较。 如果要按照数字的自然大小进行排序,那么需要自定义排序方式

     1 var arr=[3,1,4,10,5];
     2         
     3 function compare(val1,val2){
     4     if(val1<val2){
     5         return -1;
     6     }else if(val1>val2){
     7         return 1;
     8     }else {
     9         return 0;
    10     }
    11 }
    12             
    13 arr.sort(compare);
    14             
    15 alert(arr);  //输出结果:1,3,4,5,10

    这是升序的方式,降序方法类似

    filter():  

     语法:

    var filteredArray = array.filter(callback[, thisObject]);
    

    参数说明:

    callback: 要对每个数组元素执行的回调函数。
    thisObject : 在执行回调函数时定义的this对象。

    //过滤掉小于 10 的数组元素:
    
    //代码:
    function isBigEnough(element, index, array) {
        return (element >= 10);
    }
    var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
    // 12, 130, 44
    //结果:[12, 5, 8, 130, 44].filter(isBigEnough) : 12, 130, 44 

    功能说明:

    对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略,同时,新创建的数组也不会包含这些元素。

    回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。

    如参数 thisObject 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。

    filter 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。

    map():

    //将所有的数组元素转换为大写:
    
    var strings = ["hello", "Array", "WORLD"];
    function makeUpperCase(v)
    {
        return v.toUpperCase();
    }
    var uppers = strings.map(makeUpperCase);
    // uppers is now ["HELLO", "ARRAY", "WORLD"]
    // strings is unchanged
    //结果:["hello", "Array", "WORLD"].map(makeUpperCase) : HELLO, ARRAY, WORLD 

    some():

    对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。

    //检查是否有数组元素大于等于10:
    
    function isBigEnough(element, index, array) {
        return (element >= 10);
    }
    var passed = [2, 5, 8, 1, 4].some(isBigEnough);
    // passed is false
    passed = [12, 5, 8, 1, 4].some(isBigEnough);
    // passed is true
    //结果:
    //[2, 5, 8, 1, 4].some(isBigEnough) : false 
    //[12, 5, 8, 1, 4].some(isBigEnough) : true 

    every():

    对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false,如果发现这个元素,every 将返回 false,如果回调函数对每个元素执行后都返回 true ,every 将返回 true。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略

    //测试是否所有数组元素都大于等于10:
    
    function isBigEnough(element, index, array) {
        return (element >= 10);
    }
    var passed = [12, 5, 8, 130, 44].every(isBigEnough);
    // passed is false
    passed = [12, 54, 18, 130, 44].every(isBigEnough);
    // passed is true
    //结果:
    //[12, 5, 8, 130, 44].every(isBigEnough) 返回 : false 
    //[12, 54, 18, 130, 44].every(isBigEnough) 返回 : true 

    forEach():

    //打印数组内容:
    
    function printElt(element, index, array) {
        document.writeln("[" + index + "] is " + element + "<br />");
    }
    [2, 5, 9].forEach(printElt);
    // Prints:
    // [0] is 2
    // [1] is 5
    // [2] is 9
    //结果:
    //[0] is 2
    //[1] is 5
    //[2] is 9
    

    lastIndexOf():

    语法

    var index = array.lastIndexOf(searchElement[, fromIndex]);

    参数说明

    searchElement: 要搜索的元素

    fromIndex : 开始搜索的位置,默认为数组的长度(length),在这样的情况下,将搜索所有的数组元素。搜索是反方向进行的。

    功能说明

    比较 searchElement 和数组的每个元素是否绝对一致(===),当有元素符合条件时,返回当前元素的索引。如果没有发现,就直接返回 -1 。

    //查找符合条件的元素:
    
    var array = [2, 5, 9, 2];
    var index = array.lastIndexOf(2);
    // index is 3
    index = array.lastIndexOf(7);
    // index is -1
    index = array.lastIndexOf(2, 3);
    // index is 3
    index = array.lastIndexOf(2, 2);
    // index is 0
    index = array.lastIndexOf(2, -2);
    // index is 0
    index = array.lastIndexOf(2, -1);
    // index is 3
    //结果:
    //[2, 5, 9, 2].lastIndexOf(2) : 3 
    //[2, 5, 9, 2].lastIndexOf(7) : -1 
    //[2, 5, 9, 2].lastIndexOf(2, 3) : 3 
    //[2, 5, 9, 2].lastIndexOf(2, 2) : 0 
    //[2, 5, 9, 2].lastIndexOf(2, -2) : 0 
    //[2, 5, 9, 2].lastIndexOf(2, -1) : 3 

    indexOf():

    功能与lastIndexOf()一样,搜索是正向进行的

    //查找符合条件的元素:
    
    var array = [2, 5, 9];
    var index = array.indexOf(2);
    // index is 0
    index = array.indexOf(7);
    // index is -1
    //结果:
    //[2, 5, 9].indexOf(2) : 0 
    //[2, 5, 9].indexOf(7) : -1 

      

     
     
     
  • 相关阅读:
    LyX – The Document Processor
    An HTML5 presentation builder — Read more
    R语言定义
    A Hybrid User and ItemBased Collaborative Filtering with Smoothing on Sparse Data
    RapidMiner
    http://www.rseek.org一个查找R资料的站点
    An HTML5 presentation builder — Read more
    R代码脚本的运行
    data ming with R a book
    A Hybrid User and ItemBased Collaborative Filtering with Smoothing on Sparse Data
  • 原文地址:https://www.cnblogs.com/caoyc/p/5709687.html
Copyright © 2011-2022 走看看