JavaScript之数组(Array)详解(3)


var colors = ["red", "green", "blue"];
//删除
var removed = colors.slice(0, 1); //删除第1项
var colors3 = colors.slice(1, 4);
alert(colors); //green,blue
alert(removed); //red
//插入
removed = colors.slice(1, 0,"yellow","orange"); //从位置1开始插入
alert(colors); //green,yellow,orange,blue
alert(removed); //空数组
//替换
removed = colors.slice(1, 1,"red","purple"); //从位置1开始插入
alert(colors); //green,"red","purple",orange,blue
alert(removed); //"yellow"

7、位置方法
    ECMAScript5为数组提供了两个位置方法:indexOf()和lastIndexOf()。这两个方法都接收两个参数:要查找的项和表示查找起点位置的索引(可选)。其中indexOf()方法从数组的开头开始先后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
    这两个方法都返回要查找的项在数组中的位置,在没有找到的情况下返回-1。

复制代码 代码如下:


var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
alert(numbers.indexOf(4)) //3
alert(numbers.lastIndexOf(4)) //5
alert(numbers.indexOf(4, 4)) //5
alert(numbers.lastIndexOf(4, 4)) //3


8、迭代方法

ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数,第一个是进行迭代的函数,第二个是该函数的作用域对象【可选】。

进行迭代的函数接受三个参数,第一个是数组中要进行迭代的元素的值,第二个是数组候总要进行迭代的元素的位置,第三个是迭代数组本身。

1. every()      对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true    
 2. filter()       对数组中的每一项运行给定的函数,返回该函数返回true的项组成的数组。    
 3. forEach()  对数组中的每一项运行给定的函数,这个方法没有返回值    4. map()       对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组
    5. some()     对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true
    这些迭代方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome
    在这些方法中,最相似的是every()和some(),它们都是用于查询数组中的项是否满足某个条件。对every()来说,传入的函数必须对每一项都返回true,这个方法才返回true;否则,他就返回false。而some()方法则是只要传入的函数对数组中某一项返回true,就返回true。

复制代码 代码如下:


var num = [1,2,3,4,5,6,7,8,9];
var everyResult = num.every(function(item, index, array) {
    if(item > 2) {
        return true;
    }
});
alert(everyResult); //false
var someResult = num.some(function(item) {
    if(item > 2) {
        return true;
    }
});
alert(someResult); //true

filter()是利用指定的函数确定是否在返回的数组中包含某一项。

复制代码 代码如下:


var num = [1,2,3,4,5,4,3,2,1];
var filterResult = num.filter(function(item) {
    if(item > 2) {
        return true;
    }
});
alert(filterResult);  //[3,4,5,4,3]

map()也返回一个数组,而这个数组的每一项都是在原始数组中的对应项上运行传入函数的结果。
 

复制代码 代码如下:


  var num = [1,2,3,4,5,4,3,2,1];
var mapResult = num.map(function(item) {
    if(item > 2) {
        return true;
    }
}); //[2,3,6,8,10,8,6,4,2]
 

forEach()是对数组中的每一项运行传入的函数。这个方法没有返回值,本质上与使用for循环迭代数组一样。

复制代码 代码如下:


var num = [1,2,3,4,5,4,3,2,1];
num.forEach(function(item) {
  // 执行操作
});

9、归并方法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgjsff.html