晴明的博客园 GitHub      CodePen      CodeWars     

[js] Array 数组 相关方法

Array.isArray(element)

//Array对象的一个静态函数,判断一个对象是不是数组 。

1     var a = new Array(123);
2     var b = new Date();
3     console.log(Array.isArray(a)); //true
4     console.log(Array.isArray(b)); //false

 

Array.forEach(element,index,array)

//遍历数组,参数为一个回调函数,回调函数有三个参数:当前元素,元素索引,整个数组。

//只能遍历数组,不能遍历对象。

//快速遍历数组

1     var a = new Array(1, 2, 3, 4, 5, 6);
2     a.forEach(function(e, i, array) {
3         array[i] = e + 1;
4     });
5     console.log(a); //[2, 3, 4, 5, 6, 7]

 

Array.map(function(element))
//遍历数组,回调函数返回值组成一个新数组返回

//新数组索引结构和原数组一致,原数组不变

//快速深复制

 1     var a = new Array(1, 2, 3, 4, 5, 6);
 2     console.log(a.map(function(e) {
 3         return e;
 4     })); // [1, 2, 3, 4, 5, 6]     
 5     console.log(a.map(function(e) {
 6         return e * e;
 7     })); // [1, 4, 9, 16, 25, 36]
 8     console.log(a.map(function(e) {
 9         return e % 2 === 0;
10     })); // [false, true, false, true, false, true]    
11     console.log(a); //[1, 2, 3, 4, 5, 6]

 

Array.filter(function(element))
//返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加

//新数组只包含返回true的值,索引缺失的不包括,原数组保持不变

1     var a = new Array(1, 2, 3, 4, 5, 6);
2     console.log(a.filter(function(e) {
3         return e;
4     })); //[1, 2, 3, 4, 5, 6]
5     console.log(a.filter(function(e) {
6         return e % 2 === 0;
7     })); // [2, 4, 6]
8     console.log(a); //[1, 2, 3, 4, 5, 6]

 

Array.reduce(function(v1,v2),value) / Array.reduceRight(function(v1,v2),value)
//遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向。
//value为可选初始值。例,原始为v1=1,v2=2,v1+v2=3,v1=3,v2=3。value设为100后,v1=100,v2=1。

//也可用于快速拼接字符串

// 当arr为空数组时,默认值为value,也就是以value为起始。不传value为空数组时会报错

 1     var a = new Array(1, 2, 3, 4, 5, 6);
 2     var aa = a.reduce(function(v1, v2) {
 3         console.log(v1);
 4         console.log(v2);
 5         return v1 + v2;
 6     });
 7     console.log(aa); // 21。可用于快速计算数组和。
 8 
 9 
10     var bb = a.reduceRight(function(v1, v2) {
11         console.log(v1);
12         console.log(v2);
13         return v1 - v2;
14     }, 100);          
15     console.log(bb); // 79

 

Array.every(function(element, index, array)) / Array.some(function(element, index, array))
//这两个函数类似于离散数学中的逻辑判定, 回调函数返回一个布尔值, every是“所有”函数的每个回调函数都返回true的时候才会返回true, 当遇到false的时候终止执行, 返回false;
//some函数是“存在”一个回调函数返回true的时候终止执行并返回true, 否则返回false。
//在空数组上调用every返回true, some返回false。

 1             var a = new Array(1, 2, 3, 4, 5, 6);
 2             console.log(a.every(function(e, i, arr) {
 3                 console.log(i + ' : ' + e);
 4                 //console.log(arr);//原数组
 5                 return e < 5;
 6             }));
 7             /*0 : 1 
 8             1 : 2
 9             2 : 3
10             3 : 4 
11             4 : 5 
12             false */
13             var a = new Array(1, 2, 3, 4, 5, 6);
14             console.log(a.some(function(e, i, arr) {
15                 console.log(i + ' : ' + e);
16                 //console.log(arr);//原数组
17                 return e > 4;
18             }));
19             /*0 : 1 
20             1 : 2
21             2 : 3
22             3 : 4 
23             4 : 5 
24             true */

 

Array.prototype.find()

//返回数组中满足测试条件的一个元素,如果没有满足条件的元素,则返回 undefined。
//区别:findIndex()方法返回的是满足条件的元素的索引,而非它的值。

            //质数又称素数,除了1和它本身以外不再有其他的因数。
            //最小的质数是2。
            function isPrime(element, index, array) {
                var start = 2;
                while (start <= Math.sqrt(element)) {
                    if (element % start++ < 1) return false;
//                    if (element % start < 1) {
//                        return false;
//                    }
//                    start++;
                    //循环,start++ 一有除尽的,也就是因数,就结束
                }
                return (element > 1); //不为1
            }
            console.log([4, 6, 8, 12].find(isPrime)); // undefined, not found
            console.log([4, 51, 8, 12].find(isPrime)); // 5

 

Array.indexOf(element) / Array.lastIndexOf(element)
 //这两个方法用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。

//也可用于检索字符串

1             var a = new Array(1, 2, 3, 3, 2, 1);
2             console.log(a.indexOf(2)); //1
3             console.log(a.lastIndexOf(2)); //4

 

String.prototype.trim()

//用于去除字符串首尾的空白符(不只是空格,还有tab、垂直制表符啊神马的)和换行符,不改变原字符串值

1         var s = '    123 \n';
2         console.log(s.length);//6
3         console.log(s.trim());//123
4         console.log(s.trim().length);//3
5         console.log(s); //    123
6         console.log(s.length); //6

 

 

#Array.prototype.concat
将传入的数组或非数组值与原数组合并,组成一个新的数组并返回.

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

```
var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

// 组成新数组 ["a", "b", "c", 1, 2, 3]; 原数组 alpha 和 numeric 未被修改
var alphaNumeric = alpha.concat(numeric);

console.log(alphaNumeric);
```

```
var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// 组成新数组[1, 2, 3, 4, 5, 6, 7, 8, 9]; 原数组 num1, num2, num3 未被修改
var nums = num1.concat(num2, num3);

console.log(nums);
```

```
var alpha2 = ['a', 'b', 'c'];

// 组成新数组 ["a", "b", "c", 1, 2, 3], 原alpha数组未被修改
var alphaNumeric2 = alpha2.concat(1, [2, 3]);

console.log(alphaNumeric2);
```

```
var a = ['a', 'b', 'c'];

var b = a.concat(1, ['a','b']);

//["a", "b", "c", 1, "a", "b"]
console.log(b);
```

#Array.prototype.join()

将数组中的所有元素连接成一个字符串。

str = arr.join([separator = ','])

```
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join();      // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', ');  // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join('');    // myVar4的值变为"WindRainFire"
```

posted @ 2016-02-27 03:12  晴明桑  阅读(235)  评论(0编辑  收藏  举报