• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

技术天地

js数组方法大全

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/2019/0902/624.html

常州微信小程序开发JavaScript中建立数组有两种方法
 
(一)应用 Array 组织函数:
 
 
 
var arr1 = new Array(); //建立一个空数组
var arr2 = new Array(20); // 建立一个包含20项的数组
var arr3 = new Array("lily","lucy","Tom"); // 建立一个包含3个字符串的数组
 
 
(二)应用数组字面量表示法:
 
 
 
var arr4 = []; //建立一个空数组
var arr5 = [20]; // 建立一个包含1项的数组
var arr6 = ["lily","lucy","Tom"]; // 建立一个包含3个字符串的数组
 
 
数组的方法稀有组原型方法,也有从object工具秉承来的方法,这里我们只先容数组的原型方法,数组原型方法要紧有以下这些:
 
join()
push()和pop()
shift() 和 unshift()
sort()
reverse()
concat()
slice()
splice()
indexOf()和 lastIndexOf() (ES5新增)
forEach() (ES5新增)
map() (ES5新增)
filter() (ES5新增)
every() (ES5新增)
some() (ES5新增)
reduce()和 reduceRight() (ES5新增)
 
 
 
下面常州网站开发建设细致先容一下各个方法的根基功效。
 
1、join()
 
join(separator): 将数组的元素组起一个字符串,以separator为分开符,不祥的话则用默认用逗号为分开符,该方法只汲取一个参数:即分开符。
 
1
2
3
4
var arr = [1,2,3];
console.log(arr.join()); // 1,2,3
console.log(arr.join("-")); // 1-2-3
console.log(arr); // [1, 2, 3](原数组固定)
通过join()方法可以实现重复字符串,只需传入字符串以及重复的次数,就能回笼重复后的字符串,函数如下:
 
1
2
3
4
5
function repeatString(str, n) {
return new Array(n + 1).join(str);
}
console.log(repeatString("abc", 3)); // abcabcabc
console.log(repeatString("Hi", 5)); // HiHiHiHiHi
2、push()和pop()
 
push(): 可以汲取随便数目的参数,把它们逐一增加到数组末端,并回笼点窜后数组的长度。 
pop():数组末端移除非常后一项,削减数组的 length 值,而后回笼移除的项。
 
1
2
3
4
5
6
7
var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count); // 5
console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var item = arr.pop();
console.log(item); // Sean
console.log(arr); // ["Lily", "lucy", "Tom", "Jack"]
3、shift() 和 unshift()
 
shift():删除原数组第一项,并回笼删除元素的值;要是数组为空则回笼undefined 。 
unshift:将游戏开发运营参数增加到原数组开首,并回笼数组的长度 。
 
这组方法和上头的push()和pop()方法恰好对应,一个是操纵数组的开首,一个是操纵数组的结尾。
 
1
2
3
4
5
6
7
var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count); // 5
console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"]
var item = arr.shift();
console.log(item); // Jack
console.log(arr); // ["Sean", "Lily", "lucy", "Tom"]
4、sort()
 
sort():按升序排列数组项——即非常小的值位于非常前面,非常大的值排在非常背面。
 
在排序时,sort()方法会挪用每个数组项的 toString()转型方法,而后对照获得的字符串,以确定若何排序。即便数组中的每一项都是数值, sort()方法对照的也是字符串,是以会出现以下的这种环境:
 
1
2
3
4
5
var arr1 = ["a", "d", "c", "b"];
console.log(arr1.sort()); // ["a", "b", "c", "d"]
arr2 = [13, 24, 51, 3];
console.log(arr2.sort()); // [13, 24, 3, 51]
console.log(arr2); // [13, 24, 3, 51](元数组被转变)
为打听决上述题目,sort()方法可以汲取一个对照函数作为参数,以便我们指定哪一个值位于哪一个值的前面。对照函数汲取两个参数,要是第一个参数应该位于第二个以前则回笼一个负数,要是两个参数相称则回笼 0,要是第一个参数应该位于第二个以后则回笼一个正数。以下即是一个简单的对照函数:
 
1
2
3
4
5
6
7
8
9
10
11
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare)); // [3, 13, 24, 51]
要是需求通过对照函数产生降序排序的后果,只要互换常州手游开发对照函数回笼的值即可:
 
1
2
3
4
5
6
7
8
9
10
11
function compare(value1, value2) {
if (value1 < value2) {
return 1;
} else if (value1 > value2) {
return -1;
} else {
return 0;
}
}
arr2 = [13, 24, 51, 3];
console.log(arr2.sort(compare)); // [51, 24, 13, 3]
5、reverse()
 
reverse():回转数组项的挨次。
 
1
2
3
var arr = [13, 24, 51, 3];
console.log(arr.reverse()); //[3, 51, 24, 13]
console.log(arr); //[3, 51, 24, 13](原数组转变)
6、concat()
 
concat() :将参数增加到原数组中。这个方法会先建立目前数组一个副本,而后将汲取到的参数增加到这个副本的末端,非常后回笼新构建的数组。在没有给 concat()方法传递参数的环境下,它只是复制目前数组并回笼副本。
 
1
2
3
4
var arr = [1,3,5,7];
var arrCopy = arr.concat(9,[11,13]);
console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13]
console.log(arr); // [1, 3, 5, 7](原数组未被点窜)
从上头测试后果可以发现:传入的不是数组,则干脆把参数增加到数组背面,要是传入的是数组,则将数组中的各个项增加到数组中。不过要是传入的是一个二维数组呢?
 
1
2
3
var arrCopy2 = arr.concat([9,[11,13]]);
console.log(arrCopy2); //[1, 3, 5, 7, 9, Array[2]]
console.log(arrCopy2[5]); //[11, 13]
上述代码中,arrCopy2数组的第五项是一个包含两项的数组,也即是说concat方法只能将传入数组中的每一项增加到数组中,要是传入数组中有些项是数组,辣么也会把这一数组项看成一项增加到arrCopy2中。
 
7、slice()
 
slice():回笼从常州游戏开发培训原数组中指定开始下标到结束下标之间的项组成的新数组。slice()方法可以接受一或两个参数,即要回笼项的肇始和结束位置。在惟有一个参数的环境下, slice()方法回笼从该参数指定位置开始到目前数组末端的所有项。要是有两个参数,该方法回笼肇始和结束位置之间的项——但不包含结束位置的项。
 
1
2
3
4
5
6
7
8
9
10
var arr = [1,3,5,7,9,11];
var arrCopy = arr.slice(1);
var arrCopy2 = arr.slice(1,4);
var arrCopy3 = arr.slice(1,-2);
var arrCopy4 = arr.slice(-4,-1);
console.log(arr); //[1, 3, 5, 7, 9, 11](原数组没变)
console.log(arrCopy); //[3, 5, 7, 9, 11]
console.log(arrCopy2); //[3, 5, 7]
console.log(arrCopy3); //[3, 5, 7]
console.log(arrCopy4); //[5, 7, 9]
arrCopy只配置了一个参数,也即是肇始下标为1,以是回笼的数组为下标1(包含下标1)开始到数组非常后。 
arrCopy2配置了两个参数,回笼肇始下标(包含1)开始到停止下标(不包含4)的子数组。 
arrCopy3配置了两个参数,停止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替代该位置的数,是以即是从1开始到4(不包含)的子数组。 
arrCopy4中两个参数都是负数,以是都加上数组长度6转换成正数,是以相配于slice(2,5)。
 
8、splice()
 
splice():很壮大的数组方法,它有良多种用法,可以实现删除、插入和替代。
 
删除:可以删除随便数目的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。比方, splice(0,2)会删除数组中的前两项。
 
插入:可以向指定位置插入随便数目的项,只需提供 3 个参数:肇始位置、 0(要删除的项数)和要插入的项。比方,splice(2,0,4,6)会从目前数组的位置 2 开始插入4和6。
替代:可以向指定位置插入随便数目的项,且同时删除随便数目的项,只需指定 3 个参数:肇始位置、要删除的项数和要插入的随便数目的项。插入的项数无谓与删除的项数相称。比方,splice (2,1,4,6)会删除目前数组位置 2 的项,而后再从位置 2 开始插入4和6。
 
splice()方法永远都邑回笼一个数组,该数组中包含从原始数组中删除的项,要是没有删除任何项,则回笼一个空数组。
 
1
2
3
4
5
6
7
8
9
10
var arr = [1,3,5,7,9,11];
var arrRemoved = arr.splice(0,2);
console.log(arr); //[5, 7, 9, 11]
console.log(arrRemoved); //[1, 3]
var arrRemoved2 = arr.splice(2,0,4,6);
console.log(arr); // [5, 7, 4, 6, 9, 11]
console.log(arrRemoved2); // []
var arrRemoved3 = arr.splice(1,1,2,4);
console.log(arr); // [5, 2, 4, 4, 6, 9, 11]
console.log(arrRemoved3); //[7]
9、indexOf()和 lastIndexOf()
 
indexOf():汲取两个参数:要查找的项和(可选的)表示查找出发点位置的索引。此中, 从数组的开首(位置 0)开始向后查找。 
lastIndexOf:汲取两个参数:要查找的项和(可选的)表示查找出发点位置的索引。此中, 从数组的末端开始向前查找。
 
这两个方法都回笼要查找的项在数组中的位置,大概在没找到的环境下回笼1。在对照第一个参数与数组中的每一项时,会应用全等操纵符。
 
1
2
3
4
5
6
var arr = [1,3,5,7,7,5,3,1];
console.log(arr.indexOf(5)); //2
console.log(arr.lastIndexOf(5)); //5
console.log(arr.indexOf(5,2)); //2
console.log(arr.lastIndexOf(5,4)); //2
console.log(arr.indexOf("5")); //-1
10、forEach()
 
forEach():对手机App外包数组进行遍历轮回,对数组中的每一项运转给定函数。这个方法没有回笼值。参数都是function范例,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。
 
1
2
3
4
5
6
7
8
9
10
var arr = [1, 2, 3, 4, 5];
arr.forEach(function(x, index, a){
console.log(x + '|' + index + '|' + (a === arr));
});
// 输出为:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
11、map()
 
map():指“映射”,对数组中的每一项运转给定函数,回笼每次函数挪用的后果组成的数组。
 
下面代码行使map方法实现数组中每个数求平方。
 
1
2
3
4
5
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(function(item){
return item*item;
});
console.log(arr2); //[1, 4, 9, 16, 25]
12、filter()
 
filter():“过滤”功效,数组中的每一项运转给定函数,回笼满足过滤条件组成的数组。
 
1
2
3
4
5
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.filter(function(x, index) {
return index % 3 === 0 || x >= 8;
}); 
console.log(arr2); //[1, 4, 7, 8, 9, 10]
13、every()
 
every():校验数组中每一项都是否满足条件,惟有所有项都满足条件,才会回笼true。
 
1
2
3
4
5
6
7
8
9
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(x) {
return x < 10;
}); 
console.log(arr2); //true
var arr3 = arr.every(function(x) {
return x < 3;
}); 
console.log(arr3); // false
14、some()
 
some():校验数组中是否存在满足条件的项,只要有一项满足条件,就会回笼true。
 
1
2
3
4
5
6
7
8
9
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
return x < 3;
}); 
console.log(arr2); //true
var arr3 = arr.some(function(x) {
return x < 1;
}); 
console.log(arr3); // false
15、reduce()和 reduceRight()
 
这两个方法都邑实现迭代数组的所有项,而后构建一个非常终回笼的值。reduce()方法从数组的第一项开始,逐一遍历到非常后。而 reduceRight()则从数组的非常后一项开始,向前遍历到第一项。
 
这两个方法都汲取两个参数:一个在每一项上挪用的函数和(可选的)作为合并底子的初始值。
 
传给 reduce()和 reduceRight()的函数汲取 4 个参数:前一个值、目前值、项的索引和数组工具。这个函数回笼的任何值都邑作为第一个参数自动传给下一项。第一次迭代产生在数组的第二项上,是以第一个参数是数组的第一项,第二个参数即是数组的第二项。
 
下面代码用reduce()实现数组乞降,数组一开始加了一个初始值10。
 
1
2
3
4
5
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;
},10);
console.log(sum); //25
 

上篇:上一篇:C支持的日常时间格式或类
下篇:下一篇:为列表框控件List Control设置行高