JavaScript:数组的各类属性和方法

245 阅读6分钟

总结数组的一些属性和方法。分为表格索引和方法详解。

表格索引 ——>>点这里直达方法详解

属性/方法描述
constructor返回创建数组对象的原型函数。
length设置或返回数组元素的个数
prototype允许你向数组对象添加属性或方法
concat()连接两个或更多的数组,并返回结果
copyWithin()从数组指定位置拷贝元素到的另一个指定位置中。
entries()返回数组的可迭代对象
every()检测数值元素的每个元素是否符合条件
fill()使用一个固定值来填充数组
find()返回符合传入测试(函数)条件的数组元素
findIndex()返回符合传入测试(函数)条件的数组元素索引
forEach()数组每个元素都执行一次回调函数
from()通过给定的对象中创建一个数组
includes()判断一个数组是否包含特定的值
indexOf()搜索数组中元素,并返回它所在的位置
isArray()判断对象是否为数组
join()把数组的所有元素放入一个字符串
keys()返回数组的可迭代对象,包括原始数组的键(key)
lastIndexOf搜索数组中的元素,并返回它最后出现的位置
map()通过指定函数处理数组的每个元素,并返回处理后的数组
pop()删除数组的最后一个元素并返回删除的元素
push()向数组的末尾添加一个或更多元素,并返回新的长度
reduce()将数组元素计算为一个值(从左到右)
reverse()反转数组的元素顺序
shift()删除并返回数组的第一个元素
slice()选取数组的一部分,并返回一个新的数组
some()检测数组元素中是否有元素符合指定条件
sort()对数组元素进行排序
splice()从数组中添加或删除元素
toString()把数组转换为字符串,并返回结果
unshift()将数组的开头添加一个或更多元素,并返回新的长度
valueOf()返回数组对象的原始值

属性/方法详解

属性:

length : 设置或返回数组元素的个数

let arr = [1,2,3,4]
console.log(arr.length)
arr.length = 3
console.log(arr)

4
[1,2,3]

constructor : 返回创建数组对象的原型函数

let array = [2,1]
console.log(array.constructor)

ƒ Array() { [native code] }

prototype : 允许你向数组对象添加属性或方法

//构建了一个方法
Array.prototype.add = function() {
    let res = 0
    for (i = 0; i < this.length; i++) {
        res = res + this[i]
    }
    return res
}
let arr = [1, 2, 3, 4]
console.log(arr.add())

10

方法-->改变原数组

push() : 向数组的末尾添加一个或更多元素,并返回新的长度

let arr = [1,2,3,4]
console.log(arr.push(5))
console.log(arr)

5
[1,2,3,4,5]

pop() : 删除数组的最后一个元素并返回删除的元素

let arr = ["a","b","c","d"]
console.log(arr.pop())
console.log(arr)

d
["a","b","c"]

unshift() : 向数组的开头添加一个或更多元素,并返回新的长度

let arr = [1, 2, 3, 4, 5]
console.log(arr.unshift("one","two"))
console.log(arr)

7
["one","two",1, 2, 3, 4, 5]

shift() : 删除并返回数组的第一个元素

let arr = ["one","two",1, 2, 3, 4, 5] 
console.log(arr.shift())
console.log(arr)

one
["two",1, 2, 3, 4, 5]

<!-排序>
sort() : 对数组元素进行排序,默认升序

let arr = [4,1,2,3]
console.log(arr.sort())
console.log(arr)

[1, 2, 3, 4]
[1, 2, 3, 4]

splice() : 从数组中添加或删除元素
语法:array.splice(index,[num],[item1,item2...])
index:必需。代表添加/删除元素的位置,允许负数代表从末尾开始。
[num]:方括号代表可选。代表要删除的元素数量。0则低矮表不删除
[item1,item2...]:方括号代表可选。向数组添加的元素

//删除元素
let arr = [1,2,3,4,5,6,7,8]
console.log(arr.splice(1,3))
console.log(arr)
//从倒数第一开始删2个元素,
//但倒数第一开始只有一个元素,所以只删了8
console.log(arr.splice(-1,2))
console.log(arr)

[2, 3, 4]
[1, 5, 6, 7, 8] [8]
[1, 5, 6, 7]

//删除并添加
let arr = [1,2,3,4,5,6,7,8]
console.log(arr.splice(0,2,"元素"))
console.log(arr)
let array = [1, 2, 3, 4, 5, 6, 7]; 
console.log(array.splice(-2,3,'元素1','元素2'))
console.log(array)

[1,2]
['元素',3,4,5,6,7,8] [6,7] [1,2,3,4,5,'添加1','添加2']

//只添加不删除
let arr = [1,2,3,4,5,6,7,8]
console.log(arr.splice(1,0,'one','two'))
console.log(arr)
let array = [1, 2, 3, 4, 5, 6, 7];
console.log(array.splice(-1,0,"one"))
console.log(array)

[] //因为没删除所以返回结果为空
[1, 'one','two', 2, 3, 4, 5, 6, 7, 8]
[]
[1, 2, 3, 4, 5, 6, 'one', 7]

sort() : 对数组内的元素进行排序 return的值小于0时,不互换位置

let arr = [1, 9, 23, 58, 666, 154, 233]
//仅仅是arr.sort()是无法按大小正确排序的
arr.sort()
console.log(arr)
let arr = [1, 9, 23, 58, 666, 154, 233]
arr.sort(function(a, b) { return a - b })
console.log(arr)
let arr = [1, 9, 23, 58, 666, 154, 233]
arr.sort(function(a, b) { return b - a })
console.log(arr)

[1, 154, 23, 233, 58, 666, 9] [1, 9, 23, 58, 154, 233, 666]
[666, 233, 154, 58, 23, 9, 1]

reverse() : 颠倒数组内元素的顺序。

let arr = [5, 6, 2, 7]
arr.reverse()
console.log(arr);

[7,2,6,5]

copyWithin() :

() :

() :

() :

方法-->不改变数组

join() : 把数组的所有元素放入一个字符串,可以自定义拼接符号

let arr = [1,2,3,4]
let str = arr.join()
let str2 = arr.join('+')
console.log(arr)
console.log(str)
console.log(str2)

 [1, 2, 3, 4]
'1,2,3,4'
'1+2+3+4'

toString() : 将数组转化为字符串,不能像join那样自定义字符串

let arr = ['hello','jack']
console.log(arr.toString())
console.log(arr)

hello,jack
['hello','jack']

toLocaleString() : 数组转字符串

let arr = [1,2,3,4]
console.log(arr.toLocaleString())
console.log(arr)

1,2,3,4
[1,2,3,4]

concat() : 合并两个或多个数组,返回一个新的数组

let arr1 = [1, 2, 3, 4]
let arr2 = [5, 6, 7, 8]
let arr3 = [9, 10, 11, 12]
//拼接一个或多个数组
let array123 = arr1.concat(arr2, arr3)
console.log(array123)
let array = arr1.concat('前', arr2, arr3, '后')
console.log(array)
//也可以用作字符串拼接数组,同样返回数组
let array2 = '数字有:'.concat(arr1)
console.log(array2)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[1, 2, 3, 4, '前', 5, 6, 7, 8, 9, 10, 11, 12, '后']

查找:

indexOf() : 搜索数组中元素,并返回它所在的位置,找不到则返回-1

let arr = ["一","二","三","四","2",NaN]
console.log(arr.indexOf("二"))
//接受第二参数,表示从这开始查找
console.log(arr.indexOf("二",3))
//严格相等才行
console.log("寻找2:"+arr.indexOf(2))
//查不到NaN
console.log("查NaN:"+arr.indexOf(NaN))
console.log(arr)

1
-1
寻找2:-1
查NaN:-1
["一","二","三","四","五"]

lastIndexOf() : 搜索数组中的元素,并返回它最后出现的位置

let arr = ["一", "二", "三", "四", "三", "四", "2", NaN]
console.log(arr.lastIndexOf("三")) //4
console.log(arr.lastIndexOf("三", 3)) //2
//负数代表从倒数第5个开始往前查找
console.log(arr.lastIndexOf("三", -5)) //4
//NaN同样找不到。当然也要严格相等
console.log(arr.lastIndexOf(NaN))

includes() : 判断一个数组是否包含特定的值(弥补了indexOf的不足)
它能够识别NaN,而且返回值为true或者false。其余和indexOf相同

let arr = ["一","二","三","四","2",NaN]
console.log(arr.includes("二"))  //true
console.log(arr.includes(NaN))  //true
console.log(arr.includes(2))   //false

() :

() :

() :

其他:

of() : 返回

() :

() :