JavaScript 数组常用方法和属性,很强大的js功能属性
JS数组常用的属性就一个:length,表示数组的长度。
length可以获取数组长度,也可以设置数组长度。比如:
var arr = [1,2,3];
var x = arr.length; //获取数组arr的长度,返回3
arr.length = 5; //设置数组arr的长度为5
var y = arr.length; //返回5
arr[3] = undefined;
arr[4] = undefined;
设置数组长度,如果设置的长度比现有的数组长度大的话,数组将增大,新的元素被添加到数组的尾部,它们的值为undefined;如果设置的长度比现有数组长度小的话,现有数组会被截断,其尾部元素将丢失。
- JavaScript 数组常用方法
数组强大的地方,一方面是它的数据结构,一方面就是它的方法了。
它的数据结构让我们很方便的存储和查找数据;
它的方法让我们很方便的操作数组里的数据;
concat(arr1,arr2,arr3,……) 方法
,连接两个或多个数组,并返回一个新的数组,原有数组不发生改变。
参数可以是数组,也可以是具体的值。用法如下:
var a = [1,2];
var b = a.concat(3,4); //b的值为[1,2,3,4]
var c = [5,6];
var d = a.concat(c); //d的值为[1,2,5,6]
var e = a.concat(b,c); //e的值为[1,2,1,2,3,4,5,6]
join(separator) 方法
,将所有数组元素结合为一个字符串返回,原有数组不发生改变。
separator参数表示分隔符,是可选的,默认分隔符是逗号。用法如下:
var a = [1,2];
var b = a.join(); //b的值为1,2
var c = a.join("*"); //b的值为1*2
join方法和字符串方法里的split是相对的。
join方法是把数组转换成字符串;
split方法是把字符串转换成数组;
toString() 方法
,把数组转换为字符串。它和没有参数的join是一样的作用。
push(x1,x2,x3,……) 方法
,可向数组的末尾添加一个或多个元素,并返回新的长度,原有数组发生改变。用法如下:
<p id="test"></p>
var a = [1,2];
var b = a.push(3); //b的值为3
document.getElementById("test").innerHTML = a.toString(); //输出1,2,3
pop() 方法
,删除并返回数组的最后一个元素,原有数组发生改变。用法如下:
<p id="test"></p>
var a = [1,2];
var b = a.pop(); //b的值为2
document.getElementById("test").innerHTML = a.toString(); //输出1
unshift(x1,x2,x3,……) 方法
,可向数组的开头添加一个或多个元素,并返回新的长度,原有数组发生改变。用法如下:
<p id="test"></p>
var a = [1,2];
var b = a.unshift(3); //b的值为3
document.getElementById("test").innerHTML = a.toString(); //输出3,1,2
shift() 方法
,删除并返回数组的第一个元素,原有数组发生改变。用法如下:
<p id="test"></p>
var a = [1,2];
var b = a.shift(); //b的值为1
document.getElementById("test").innerHTML = a.toString(); //输出2
splice(index,howmany,item1,.....,itemX) 方法
,向数组添加/删除元素,然后返回被删除的元素,原有数组发生改变。
参数index
,表示添加/删除元素的位置,从0开始,使用负数可从数组结尾处规定位置,整数,必需。
参数howmany
,表示要删除的元素数量。如果设置为 0,则不会删除元素,整数,必需。
参数item1,.....,itemX
,表示向数组添加的新元素,可选。
通过设定howmany参数
,来决定方法是添加还是删除。如果是0,该方法表示添加元素,否则会删除元素。
用法如下:
添加元素
:
<p id="test"></p>
var a = [1,2];
var b = a.splice(1,0,3); //b的值为空,因为没有删除元素
document.getElementById("test").innerHTML = a.toString(); //输出1,3,2
删除元素
:
<p id="test"></p>
var a = [1,2];
var b = a.splice(1,1); //b的值2
document.getElementById("test").innerHTML = a.toString(); //输出1
删除并添加元素,也就是替换元素:
<p id="test"></p>
var a = [1,2];
var b = a.splice(1,1,3); //b的值2
document.getElementById("test").innerHTML = a.toString(); //输出1,3
slice(start,end) 方法
,可从已有的数组中返回选定的元素,原有数组不发生改变。
参数start
:开始位置。可以是负数。负数表示从数组尾部开始算。-1表示最后一个元素,-2表示倒数第二个元素,以此类推,必需。
参数end
:结束位置。可选,默认是到最后一个元素,可以是负数,负数表示从尾部开始算。
返回的元素包括start,不包括end。
用法如下:
var a = [1,2,3];
var b = a.slice(1); //b的值为2,3
var c = a.slice(1,2); //c的值为2
reverse() 方法
,颠倒数组中元素的顺序,原有数组发生改变。用法如下:
<p id="test"></p>
var a = [1,2,3];
a.reverse();
document.getElementById("test").innerHTML = a.toString(); //输出3,2,1
sort(sortby) 方法
,对数组的元素进行排序,原有数组发生改变。
参数sortby
是可选的,默认按照字母顺序排序。它是一个比较函数,函数有两个参数a和b,返回值用来说明a和b的大小。具体用法如下:
function(a,b){return a-b}
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
写几个小例子,大家可以多写几个例子做练习,加深印象:
<div id="test"></div>
var a = ["aaa","ccc","bbb"];
a.sort();
document.getElementById("test").innerHTML = a.toString(); //输出 aaa,bbb,ccc
<div id="test"></div>
var a = [10,8,5];
a.sort();
document.getElementById("test").innerHTML = a.toString(); //输出 10,5,8
<div id="test"></div>
var a = [10,8,5];
a.sort(function(a,b){return a-b}); //升序
document.getElementById("test").innerHTML = a.toString(); //输出 5,8,10
<div id="test"></div>
var a = [10,8,5];
a.sort(function(a,b){return b-a}); //降序
document.getElementById("test").innerHTML = a.toString(); //输出 10,8,5
var person = [
{'name' : 'xiaoming','age':7},
{'name' : 'meimei','age':10},
{'name' : 'lilei','age':8}
]
person.sort(function(a,b){a.age-b.age}); //按照年龄排序
排序后的数组:
[
{'name' : 'xiaoming','age':7},
{'name' : 'lilei','age':8}
{'name' : 'meimei','age':10}
]
person.sort(function(a,b){
if(a.name > b.name) {return 1;}
else if(a.name < b.name) {return -1;}
else{return 0}
}); //按照姓名排序
排序后的数组:
[
{'name' : 'lilei','age':8},
{'name' : 'meimei','age':10},
{'name' : 'xiaoming','age':7}
]
isArray()方法
,判断对象是否为数组。它的用法是直接用Array类来调取的,参数是要检测的对象,返回值是布尔值。用法如下:
var a = [1,2];
var b = Array.isArray(a); //返回true
- 数组迭代方法
数组的迭代方法,说白了,就是循环对每个元素进行操作。所有的迭代方法都不会改变原有数组。所有的方法,我们自己都可以用循环语句加逻辑来实现。
forEach() 方法
,为每个数组元素调用一次函数(回调函数)。用法如下:
<div id="test"></div>
var txt = "";
var a = [45, 3];
a.forEach(callFunction);
function callFunction(value, index, array) {
txt = txt + value + "<br>";
}
document.getElementById("test").innerHTML = txt;
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
map() 方法
,对每个元素执行函数以创建新的数组。用法如下:
<div id="test"></div>
var a = [45, 3];
var b = a.map(callFunction);
function callFunction(value, index, array) {
return value * 2;
}
document.getElementById("test").innerHTML = b; //输出90,6
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
filter() 方法
,检测元素,并返回符合条件所有元素的数组。用法如下:
<div id="test"></div>
var a = [45, 3];
var b = a.filter(callFunction);
function callFunction(value, index, array) {
return value > 10;
}
document.getElementById("test").innerHTML = b; //输出45
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
every() 方法
,检测数组元素的每个元素是否都符合条件,返回值是布尔值。用法如下:
<div id="test"></div>
var a = [45, 3];
var b = a.every(callFunction);
function callFunction(value, index, array) {
return value > 10;
}
document.getElementById("test").innerHTML = b; //输出false
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
some() 方法
,检测数组元素中是否有元素符合指定条件,返回值是布尔值。用法如下:
<div id="test"></div>
var a = [45, 3];
var b = a.some(callFunction);
function callFunction(value, index, array) {
return value > 10;
}
document.getElementById("test").innerHTML = b; //输出true
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
find() 方法
,返回符合条件的第一个元素的值。用法如下:
<div id="test"></div>
var a = [45, 3,16];
var b = a.find(callFunction);
function callFunction(value, index, array) {
return value > 10;
}
document.getElementById("test").innerHTML = b; //输出45
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
findIndex() 方法
,返回符合条件的第一个元素的索引。用法如下:
<div id="test"></div>
var a = [45, 3,16];
var b = a.findIndex(callFunction);
function callFunction(value, index, array) {
return value > 10;
}
document.getElementById("test").innerHTML = b; //输出0
回调函数包括三个参数:value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
indexOf(item,start) 方法
,在数组中搜索元素值并返回其位置。用法如下:
<div id="test"></div>
var a = [45, 3,16];
var b = a.indexOf(3);
document.getElementById("test").innerHTML = b; //输出1
两个参数:
item:检索的元素值(必需)
start:开始位置(可选),负数从结尾开始,并搜索到结尾。
lastIndexOf(item,start)
和indexOf
功能一样,只不过,从结尾开始。
reduce() 方法
,将数组元素计算为一个值(从左到右)。用法如下:
<div id="test"></div>
var a = [45, 3];
var b = a.reduce(callFunction);
function callFunction(total,value, index, array) {
return total + value;
}
document.getElementById("test").innerHTML = b; //输出48
回调函数包括四个参数:
total:初始值, 或者计算结束后的返回值。(必需)
value:元素值(必需)
index:索引(可选)
array:数组本身(可选)
reduce()方法
可以设定一个初始值,比如:
var b = a.reduce(callFunction,100);
按照上面的逻辑,b的值为148。
reduceRight()
方法和reduce()
方法一样,只不过,执行顺序是从右到左。
今天的文章内容很多,基础的东西也很琐碎,需要多做练习掌握。
如果想获得更多的前端知识,可以微信搜索微信公众号“刘小妞的栖息地”或者识别图片的二维码查看更多的前端基础知识文章,都是干货,希望对大家有帮助。
推荐阅读
-
Node.js中process模块常用的属性和方法
-
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
-
js对象常用属性和方法:复制一个对象,获取一个对象的所有key和所有value的方法
-
js中Array数组的属性和方法
-
Node.js中process模块常用的属性和方法
-
统一接口:为FireFox添加IE的方法和属性的js代码_javascript技巧
-
Node.js中process模块常用的属性和方法
-
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
-
JavaScript常用对象的方法和属性小结_javascript技巧
-
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异_javascript技巧