学习目标
前端
JavaScript Array对象
学习内容
一、创建Array数组实例
<script type="text/javascript">
/*
数组对象是使用单独的变量名来存储一系列的值。
*/
//一、创建Array数组实例
var a = new Array();
var b = new Array(3);
var c = new Array("java", "vue", "js");
/*
创建数组的语法:
new Array();
new Array(size);
new Array(element0, element1, ..., elementn);
参数:
其中,参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。
参数 element ..., elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。
返回值:
返回新创建并被初始化了的数组。
如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。
*/
二、数组赋值
//二、数组赋值
document.write("################################### Array 数组赋值")
document.write("<br />")
//赋值方式1(常规方式)
var arr = new Array();
arr[0] = "java";
arr[1] = "vue";
arr[2] = "js";
document.write("arr:" + arr)
document.write("<br />")
// 赋值方式2(简结方式)
var arr1 = new Array("C", "C++", "C#");
document.write("arr1:" + arr1)
document.write("<br />")
// 赋值方式3(字面)
var arr2 = ["java", "vue", "js"];
document.write("arr2:" + arr2)
document.write("<br />")
三、访问数组
//三、访问数组
document.write("################################### Array 访问数组")
document.write("<br />")
/*
通过指定数组名以及索引号码,你可以访问某个特定的元素。
*/
var value = arr[0];
document.write("获取arr第一个元素:" + value)
document.write("<br />")
//修改
arr[2] = "C#";
document.write("修改后的arr:" + arr)
document.write("<br />")
/*
注:所有的JavaScript变量都是对象。数组元素是对象。函数是对象。因此,你可以在数组中有不同的变量类型。
*/
四、数组 对象属性和方法
/*
Array 对象属性:
1.constructor:返回对创建此对象的数组函数的引用。
2.length:设置或返回数组中元素的数目。
3.prototype:使您有能力向对象添加属性和方法。
*/
document.write("################################### Array 对象属性")
document.write("<br />")
// 1.constructor:返回对创建此对象的数组函数的引用。
var test = new Array();
if (test.constructor == Array) {
document.write("This is an Array");
}
if (test.constructor == Boolean) {
document.write("This is a Boolean");
}
if (test.constructor == Date) {
document.write("This is a Date");
}
if (test.constructor == String) {
document.write("This is a String");
}
document.write("<br />")
// 2.length:设置或返回数组中元素的数目。
document.write("arr的元素个数:" + arr.length)
document.write("<br />")
/*
Array 对象方法:
1.concat() 连接两个或更多的数组,并返回结果。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法:arrayObject.concat(arrayX,arrayX,......,arrayX)。其中,参数arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
2.copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。
语法:array.copyWithin(target, start, end)
参数 描述
target 必需。复制到指定目标索引位置。
start 可选。元素复制的起始位置。
end 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
返回值:Array
3.entries() 返回数组的可迭代对象。
该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。
语法:array.entries()
返回值:数组迭代对象
4.every() 检测数值元素的每个元素是否都符合条件。
使用指定函数检测数组中的所有元素:
1.如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
2.如果所有元素都满足条件,则返回 true。
注:
1.every() 不会对空数组进行检测。
2.every() 不会改变原始数组。
语法:array.every(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值: 布尔值。如果所有元素都通过检测返回 true,否则返回 false。
5.fill() 使用一个固定值来填充数组。
语法:array.fill(value, start, end)
参数 描述
value 必需。填充的值。
start 可选。开始填充位置。
end 可选。停止填充位置 (默认为 array.length)
返回值:array
6.filter() 检测数值元素,并返回符合条件所有元素的数组。
创建一个新的数组
语法:array.filter(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
注:
1.filter() 不会对空数组进行检测。
2.filter() 不会改变原始数组。
7.find() 返回符合传入测试(函数)条件的数组元素。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
语法:array.find(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
注:
1.find() 对于空数组,函数是不会执行的。
2.find() 并没有改变数组的原始值。
8.findIndex() 返回符合传入测试(函数)条件的数组元素索引。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1
语法:array.findIndex(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。
注:
1.findIndex() 对于空数组,函数是不会执行的。
2.findIndex() 并没有改变数组的原始值。
9.forEach() 数组每个元素都执行一次回调函数。
语法:array.forEach(function(currentValue, index, arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:undefined
注: forEach() 对于空数组是不会执行回调函数的。
forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 some 和 every 来实现。使用 return 语句实现 continue 关键字的效果。
10.from() 通过给定的对象中创建一个数组。
通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。
语法:Array.from(object, mapFunction, thisValue)
参数 描述
object 必需,要转换为数组的对象。
mapFunction 可选,数组中每个元素要调用的函数。
thisValue 可选,映射函数(mapFunction)中的 this 对象。
返回值:数组对象。
11.includes() 判断一个数组是否包含一个指定的值。
语法:
1.arr.includes(searchElement)
2.arr.includes(searchElement, fromIndex)
searchElement 必须。需要查找的元素值。
fromIndex 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
返回值:布尔值。如果找到指定值返回 true,否则返回 false。
注:
1.如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
2.如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
12.indexOf() 搜索数组中的元素,并返回它所在的位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。
如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
语法:array.indexOf(item,start)
item 必须。查找的元素。
start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
返回值:number 元素在数组中的位置,如果没有搜索到则返回 -1。
13.isArray() 判断对象是否为数组。
如果对象是数组返回 true,否则返回 false。
语法:Array.isArray(obj)
返回值:布尔值,如果对象是数组返回 true,否则返回 false。
14join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
语法:arrayObject.join(separator)。其中,参数separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
返回值:返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
15.keys() 返回数组的可迭代对象,包含原始数组的键(key)。
语法:array.keys()
返回值:一个数组可迭代对象。
16.lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。
与indexOf,只是开始索引值为从后往前
语法:array.lastIndexOf(item,start)
17.map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
map() 方法按照原始数组元素顺序依次处理元素。
语法:array.map(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数 参数:
参数 描述
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
注:
1.map() 不会对空数组进行检测。
2.map() 不会改变原始数组。
18.pop() 删除并返回数组的最后一个元素
语法:arrayObject.pop()
返回值:arrayObject 的最后一个元素。
说明:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
19.push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
语法:arrayObject.push(newelement1,newelement2,....,newelementX)
参数 描述
newelement1 必需。要添加到数组的第一个元素。
newelement2 可选。要添加到数组的第二个元素。
newelementX 可选。可添加多个元素。
返回值:把指定的值添加到数组后的新长度。(改变数组的长度)
说明:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
20.reduce() 将数组元素计算为一个值(从左到右)。
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。
函数参数:
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值
返回值:返回计算结果
注: reduce() 对于空数组是不会执行回调函数的。
21.reduceRight() 将数组元素计算为一个值(从右到左)。
reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
22.reverse() 颠倒数组中元素的顺序。
语法:arrayObject.reverse()
注:该方法会改变原来的数组,而不会创建新的数组。
23.shift() 删除并返回数组的第一个元素
语法:arrayObject.shift()
返回值:数组原来的第一个元素的值。(改变数组的长度)
说明:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
24.slice() 从某个已有的数组返回选定的元素
语法:arrayObject.slice(start,end)
参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
注:
1.可使用负值从数组的尾部选取元素。
2.如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
25.some() 检测数组元素中是否有元素符合指定条件。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
语法:array.some(function(currentValue,index,arr),thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数 参数:
参数 描述
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值: 布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
注:
1. some() 不会对空数组进行检测。
2. some() 不会改变原始数组。
26.sort() 对数组的元素进行排序
语法:arrayObject.sort(sortby)。参数sortby 可选。规定排序顺序。必须是函数。
返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明:
1.如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
2.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
27.splice() 删除元素,并向数组添加新元素。
语法:arrayObject.splice(index,howmany,item1,.....,itemX)
参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
返回值:Array,包含被删除项目的新数组(当howmany不为0时)。
说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
注:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
28.toSource() 返回该对象的源代码。
该原始值由 Array 对象派生的所有对象继承。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
语法:object.toSource()
浏览器支持:只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。
29.toString() 把数组转换为字符串,并返回结果。
语法:arrayObject.toString()
返回值:arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。
说明:当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
注:显示方式-数组中的元素之间用逗号分隔。
30.toLocaleString() 把数组转换为本地数组,并返回结果。
语法:arrayObject.toLocaleString()
返回值:arrayObject 的本地字符串表示。
说明:首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
31.unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)
参数 描述
newelement1 必需。向数组添加的第一个元素。
newelement2 可选。向数组添加的第二个元素。
newelementX 可选。可添加若干个元素。
返回值:arrayObject 的新长度。
说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。
该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
注:
1.unshift() 方法不创建新的创建,而是直接修改原有的数组。
2.会改变数组长度
3.unshift() 方法无法在 Internet Explorer 中正确地工作!
32.valueOf() 返回数组对象的原始值
该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
语法:arrayObject.valueOf()
*/
document.write("################################### Array 对象方法")
document.write("<br />")
var concatArr = arr.concat(arr1);
document.write("1、arr与arr1拼接之后的数组:" + concatArr);
document.write("<br />");
document.write("<hr />");
document.write("2、复制拼接后的数组的前面两个元素到第三和第四个位置上:" + concatArr.copyWithin(2, 0, 2));
document.write("<br />");
//如果是arr.copyWithin(2),它会把所有元素从索引值2开始之后的位置上复制
document.write("[1,2,3,4,5,6,7].copyWithin(3):" + [1, 2, 3, 4, 5, 6, 7].copyWithin(2)); //从索引值为3,即4,将4,5,6,7变为1,2,3,4,5,6,7
document.write("<br />");
document.write("<hr />");
document.write("3、arr.entries():" + arr.entries());//对象无法直接显示,键值对形式
document.write("<br />");
//通过log打印
for (let item of arr.entries()) {
console.log(item);
}
document.write("<hr />");
document.write("4、空数组的every()方法返回:" + a.every(() => { }));//对空数组来说,返回是true
document.write("<br />");
document.write("判断arr:" + arr + " 中元素长度是否都小于3:" + arr.every((val) => { return val.length < 3 }));
document.write("<br />");
document.write("判断arr中元素是否都为vue:" +
arr.every((val, index, arr) => {
//遍历每一个元素,只要不符合直接return不在执行,返回false
// console.log(val, index);
// console.log(arr);
return val === "vue"
}));
document.write("<br />");
document.write("<hr />");
document.write("5.使数组[1, 2, 3, 4, 5, 6, 7, 8, 9]中元素都为vue, arr:" + [1, 2, 3, 4, 5, 6, 7, 8, 9].fill('vue'));
document.write("<br />");
document.write("使数组[1,2,3,4,5,6,7,8,9]第三元素到第六个元素值都为10:" + [1, 2, 3, 4, 5, 6, 7, 8, 9].fill(10, 2, 6));//不包含索引值为6的元素
document.write("<br />");
document.write("<hr />");
var filterArr = [1, 2, 3, 4, 5, 6, 7, 8, 9].filter((val) => { return val > 5 });//得到的是数组,若没有符合条件的元素,则得到的是空数组
document.write("6.返回数组[1,2,3,4,5,6,7,8,9]中元素值大于5, filterArr:" + filterArr);
document.write("<br />");
let newArr = [56, 15, 48, 3, 7].filter(function (value, index, array) {
return value % 2 === 0;
});
document.write("数组[56, 15, 48, 3, 7]中元素值为偶数, newArr:" + newArr);
document.write("<br />");
let filterArr2 = [1, 1, 'RUNOOB', 'RUNOOB', true, true, 15].filter((item, index, arr) => {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
});
document.write("将数组[1,1,'RUNOOB','RUNOOB',true,true,15]中元素去重得到的新数组, filterArr2:" + filterArr2);
document.write("<br />");
document.write("<hr />");
document.write("7.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的元素值:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].find((item) => { return item > 5 }));
//符合条件true,return不在执行,返回符合测试条件的第一个数组元素值;若没有元素符合,则返回undefined
document.write("<br />");
document.write("<hr />");
document.write("8.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的索引位置:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].findIndex((item) => { return item > 5 }));
//符合条件true,return不在执行,返回返回符合测试条件的第一个数组元素索引;如果没有符合条件的则返回 -1。
document.write("<br />");
document.write("<hr />");
//9.forEach()无返回值,会调用数组的每个元素,并将元素传递给回调函数。可以进行数组的遍历进行一些操作
[1, 2, 13, 4, 5, 6, 7, 8, 9].forEach((item) => {
// console.log(item);
});
//break和continue用法,通过 some 和 every 来实现。
[1, 2, 13, 4, 5, 6, 7, 8, 9].some((item) => {
if (item === 5) {
return; //类似continue,元素值为5的跳过
}
// console.log(item);
});
[1, 2, 13, 4, 5, 6, 7, 8, 9].every((item) => {
// console.log(item);
return item !== 5;//元素值为5时不在执行
});
var fromArr = Array.from([1, 2, 13, 4, 5, 6, 7, 8, 9], (item) => { return item * 10 });
document.write("10.数组[1,2,13,4,5,6,7,8,9]中元素值*10,得到的新数组fromArr:" + fromArr);
//将Set集合转数组
var setObj = new Set(["a", "b", "c"]);
var objArr = Array.from(setObj);
// console.log(objArr);
document.write("<br />");
document.write("<hr />");
document.write("11.判断数组[1,2,13,4,5,6,7,8,9]中含有13,返回:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].includes(13));
document.write("<br />");
document.write("判断数组[1,2,13,4,5,6,7,8,9]中第五个位置开始查找元素值为13,返回:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].includes(13, 4));
document.write("<br />");
// 数组长度是3 fromIndex 是 -100 computed index 是 3 + (-100) = -97 计算出的索引小于 0,则整个数组都会被搜索。
['a', 'b', 'c'].includes('a', -100); // true
['a', 'b', 'c'].includes('b', -100); // true
['a', 'b', 'c'].includes('c', -100); // true
document.write("当索引值为负数时,['a', 'b', 'c'].includes('a', -100):" + ['a', 'b', 'c'].includes('a', -100));
document.write("<br />");
document.write("<hr />");
document.write("12.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:" + [1, 2, 13, 4, 5, 6, 7, 2, 9].indexOf(2));
document.write("<br />");
document.write("indexOf(2,3):" + [1, 2, 13, 4, 5, 6, 7, 2, 9].indexOf(2, 3));
document.write("<br />");
document.write("<hr />");
document.write("13.判断arr是否是数组,返回:" + Array.isArray(arr));
document.write("<br />");
document.write("<hr />");
var joinArrStr = arr.join();
document.write("14.arr以字符串拼接(逗号分隔),得joinArrStr:" + joinArrStr);
document.write("<br />");
document.write("改变分隔符:" + arr.join("--"));
document.write("<br />");
document.write("<hr />");
var objKeysArr = Object.keys(arr) //返回的索引,可用于遍历数组
objKeysArr.forEach((a, b, c) => {
console.log(a, b, c);
//a,b 0,0 1,1 2,2
//c: ["0", "1", "2"]
})
// 创建对象
var person = {
name: 'tom',
age: 20,
sex: 1,
school: "University",
home: 'China'
}
// 用forEach()进行遍历对象属性
var keys = Object.keys(person).forEach(e => {
console.log("person ", e, ": ", person[e]);
});
var keysArr = arr.keys() //一个数组可迭代对象。
document.write("15.arr.keys():" + keysArr);
document.write("<br />");
document.write("keysArr.next().value:" + keysArr.next().value + ", " + keysArr.next().value + ", " + keysArr.next().value + ", " + keysArr.next().value);//输出索引值,超出undefined
document.write("<br />");
document.write("<hr />");
document.write("16.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:" + [1, 2, 13, 4, 5, 6, 7, 2, 9].lastIndexOf(2));
document.write("<br />");
document.write("lastIndexOf(2,3):" + [1, 2, 13, 4, 5, 6, 7, 2, 9].lastIndexOf(2, 3));
document.write("<br />");
document.write("<hr />");
var mapsArr = [1, 2, 13, 4, 5, 6, 7, 8, 9].map(e => {
return e * 10;
})
document.write("17.将数组[1,2,13,4,5,6,7,8,9]中元素值*10:" + mapsArr);
document.write("<br />");
//一些使用的场景1:接口数据映射
//从接口得到数据 res:
var personArr = new Array(person)
let r = personArr.map(item => {
return {
name: item.name,
sex: item.sex === 1 ? '男' : item.sex === 0 ? '女' : '保密',
age: item.age,
school: item.school
}
});
console.log(r);
//省略return
const users = personArr.map(item => ({
name: item.name,
sex: item.sex === 1 ? '男' : item.sex === 0 ? '女' : '保密',
age: item.age,
school: item.school
})
);
var ls = ['1', '2', '3'].map(parseInt)
console.log(ls)
/*这里了解一下parseInt()函数
parseInt(string, radix),接收两个参数。
string:要转化的字符串。
radix:要转化的进制数(将这个字符串转为多少进制的数,默认为 10,即将字符串转为十进制的数),radix 的范围 为 2-36的整数, 超出这个返回将返回 NaN。
当 map() 中的函数可以接收参数时,map() 函数会自动把参数传递进去,所以三次执行顺序,parseInt() 接收的三次参数分别是:
[parseInt('1', 0), parseInt('2', 1), parseInt('3', 2)]
=> [1, NaN, NaN]
radix:要转化的进制数(将这个字符串转为多少进制的数,默认为 10,即将字符串转为十进制的数),radix 的范围 为 2-36 的整数,
超出这个返回将返回 NaN。如果省略该参数或者为 0,则数字将以 10 为基础来解析。
[parseInt('1', 0), parseInt('2', 1), parseInt('3', 2)]
=> [parseInt('1', 10), parseInt('2', 1), parseInt('', 2)]
=> [1, NaN, NaN] => [10进制1,超出2-36的范围NaN,parseInt中2进制string非1或0会被忽视NaN]
*/
//通过自定义,查看执行过程
function myParseInt(str, radix) {
console.log(str, radix)
//1 0
//2 1
//3 2
}
l = ['1', '2', '3'].map(myParseInt)
document.write("<hr />");
var arrPop = arr.pop();
document.write("18.删除arr最后一个元素并返回删除元素:" + arrPop);
document.write("<br />");
document.write("删除之后的arr数组:" + arr);
document.write("<br />");
document.write("<hr />");
var arrPush = arr.push("vue3.0");
document.write("19.在arr最后添加一个元素并返回新长度:" + arrPush);
document.write("<br />");
document.write("添加之后的arr数组:" + arr);
document.write("<br />");
var arrsPush = arr.push("C#", "typescript");
document.write("在arr最后添加多个元素并返回新长度:" + arrsPush);
document.write("<br />");
document.write("添加之后的arr数组:" + arr);
document.write("<br />");
document.write("<hr />");
var arrReduce = [1,2,13,4,5,6,7,2,9].reduce((total,num) => {
console.log(total,num);
return total + num;
});
document.write("20.计算数组[1,2,13,4,5,6,7,2,9]中元素值总和(从左往右):" + arrReduce);
document.write("<br />");
document.write("<hr />");
var arrReduceRight = [1,2,13,40].reduceRight((total,num) => {
console.log(total,num);
return total - num;
});
document.write("21.计算数组[1,2,13,40]中从右到左,减去每个数组元素::" + arrReduceRight);
document.write("<br />");
document.write("<hr />");
var reverseArr = arr.reverse();
document.write("22.arr:" + arr);
document.write("<br />");
document.write("颠倒之后arr:" + reverseArr);
document.write("<br />");
//发现arr与reverseArr的值一样,说明调用reverse()方法之后改变原来的数组,而不会创建新的数组。
document.write("<hr />");
var arrShift = arr.shift();
document.write("23.删除arr第一个元素并返回元素:" + arrShift);
document.write("<br />");
document.write("删除之后的arr数组:" + arr);
document.write("<br />");
document.write("<hr />");
var sliceArr = arr.slice(1, 3); //得到的是arr[1],arr[2];等同于arr.slice(-3,-1)
document.write("24.选定arr中:" + sliceArr);
document.write("<br />");
document.write("arr:" + arr);
//arr没有改变,即slice()返回一个新的数组,没有改变原数组
document.write("<br />");
document.write("<hr />");
var arrIsSome = [1,2,13,4,5,6,7,2,9].some(num => {
return num > 10;
});
document.write("25.判断数组[1,2,13,4,5,6,7,2,9]中是否有大于10的数,返回:" + arrIsSome);
document.write("<br />");
document.write("<hr />");
var sortArr = arr.sort();
document.write("26.arr:" + arr);
document.write("<br />");
document.write("排序后的arr:" + sortArr);
document.write("<br />");
var arrNum = new Array(6)
arrNum[0] = "10"
arrNum[1] = "5"
arrNum[2] = "40"
arrNum[3] = "25"
arrNum[4] = "1000"
arrNum[5] = "1"
document.write("arrNum:" + arrNum + "<br />")
//如果对数字进行排序,单纯的使用sort()是没有效果的
document.write("arrNum.sort()方式排序:" + arrNum.sort())
document.write("<br />");
//必须使用一个排序函数
function sortNumber(a, b) {
return a - b; //升序
}
document.write("arrNum.sort(sortNumber)加入排序函数进行升序序:" + arrNum.sort(sortNumber))
document.write("<br />");
document.write("简写,降序:" + arrNum.sort((a, b) => {
return b - a;//降序
}))
document.write("<hr />");
var spliceArr = arr.splice(2, 0, "C++"); //从 index 处开始,即将arr[2]添加新值
document.write("27.arr.splice(2,0,\"C++\"):" + spliceArr);
//这里得到的spliceArr为空,应为删除元素值为0
document.write("<br />");
document.write("在arr数组的第二个位置之后添加一个元素\"C++\",添加之后的数组:" + arr);
document.write("<br />");
//删除元素
var spliceArr = arr.splice(2, 2, "IOT");
document.write("删除的元素:" + spliceArr);
document.write("<br />");
document.write("arr:" + arr);
document.write("<br />");
document.write("<hr />");
document.write("29.arr.toString():" + arr.toString());
document.write("<br />");
document.write("<hr />");
document.write("30.arr.toLocaleString():" + arr.toLocaleString());
document.write("<br />");
document.write("<hr />");
var arrUnshift = arr.unshift("vue3")
document.write("31.arr开头添加一个元素,返回长度为:" + arrUnshift);
document.write("<br />");
document.write("arr:" + arr);
document.write("<br />");
document.write("<hr />");
</script>
运行结果:
################################### Array 数组赋值
arr:java,vue,js
arr1:C,C++,C#
arr2:java,vue,js
################################### Array 访问数组
获取arr第一个元素:java
修改后的arr:java,vue,C#
################################### Array 对象属性
This is an Array
arr的元素个数:3
################################### Array 对象方法
1、arr与arr1拼接之后的数组:java,vue,C#,C,C++,C#
2、复制拼接后的数组的前面两个元素到第三和第四个位置上:java,vue,java,vue,C++,C#
[1,2,3,4,5,6,7].copyWithin(3):1,2,1,2,3,4,5
3、arr.entries():[object Array Iterator]
4、空数组的every()方法返回:true
判断arr:java,vue,C# 中元素长度是否都小于3:false
判断arr中元素是否都为vue:false
5.使数组[1, 2, 3, 4, 5, 6, 7, 8, 9]中元素都为vue, arr:vue,vue,vue,vue,vue,vue,vue,vue,vue
使数组[1,2,3,4,5,6,7,8,9]第三元素到第六个元素值都为10:1,2,10,10,10,10,7,8,9
6.返回数组[1,2,3,4,5,6,7,8,9]中元素值大于5, filterArr:6,7,8,9
数组[56, 15, 48, 3, 7]中元素值为偶数, newArr:56,48
将数组[1,1,'RUNOOB','RUNOOB',true,true,15]中元素去重得到的新数组, filterArr2:1,RUNOOB,true,15
7.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的元素值:13
8.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的索引位置:2
10.数组[1,2,13,4,5,6,7,8,9]中元素值*10,得到的新数组fromArr:10,20,130,40,50,60,70,80,90
11.判断数组[1,2,13,4,5,6,7,8,9]中含有13,返回:true
判断数组[1,2,13,4,5,6,7,8,9]中第五个位置开始查找元素值为13,返回:false
当索引值为负数时,['a', 'b', 'c'].includes('a', -100):true
12.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:1
indexOf(2,3):7
13.判断arr是否是数组,返回:true
14.arr以字符串拼接(逗号分隔),得joinArrStr:java,vue,C#
改变分隔符:java--vue--C#
15.arr.keys():[object Array Iterator]
keysArr.next().value:0, 1, 2, undefined
16.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:7
lastIndexOf(2,3):1
17.将数组[1,2,13,4,5,6,7,8,9]中元素值*10:10,20,130,40,50,60,70,80,90
18.删除arr最后一个元素并返回删除元素:C#
删除之后的arr数组:java,vue
19.在arr最后添加一个元素并返回新长度:3
添加之后的arr数组:java,vue,vue3.0
在arr最后添加多个元素并返回新长度:5
添加之后的arr数组:java,vue,vue3.0,C#,typescript
20.计算数组[1,2,13,4,5,6,7,2,9]中元素值总和(从左往右):49
21.计算数组[1,2,13,40]中从右到左,减去每个数组元素::24
22.arr:typescript,C#,vue3.0,vue,java
颠倒之后arr:typescript,C#,vue3.0,vue,java
23.删除arr第一个元素并返回元素:typescript
删除之后的arr数组:C#,vue3.0,vue,java
24.选定arr中:vue3.0,vue
arr:C#,vue3.0,vue,java
25.判断数组[1,2,13,4,5,6,7,2,9]中是否有大于10的数,返回:true
26.arr:C#,java,vue,vue3.0
排序后的arr:C#,java,vue,vue3.0
arrNum:10,5,40,25,1000,1
arrNum.sort()方式排序:1,10,1000,25,40,5
arrNum.sort(sortNumber)加入排序函数进行升序序:1,5,10,25,40,1000
简写,降序:1000,40,25,10,5,1
27.arr.splice(2,0,"C++"):
在arr数组的第二个位置之后添加一个元素"C++",添加之后的数组:C#,java,C++,vue,vue3.0
删除的元素:C++,vue
arr:C#,java,IOT,vue3.0
29.arr.toString():C#,java,IOT,vue3.0
30.arr.toLocaleString():C#,java,IOT,vue3.0
31.arr开头添加一个元素,返回长度为:5
arr:vue3,C#,java,IOT,vue3.0
Array 方法(附)
Array 对象方法:
1.concat() 连接两个或更多的数组,并返回结果。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法:arrayObject.concat(arrayX,arrayX,......,arrayX)。其中,参数arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
2.copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。
语法:array.copyWithin(target, start, end)
参数 描述
target 必需。复制到指定目标索引位置。
start 可选。元素复制的起始位置。
end 可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
返回值:Array
3.entries() 返回数组的可迭代对象。
该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。
语法:array.entries()
返回值:数组迭代对象
4.every() 检测数值元素的每个元素是否都符合条件。
使用指定函数检测数组中的所有元素:
1.如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
2.如果所有元素都满足条件,则返回 true。
注:
1.every() 不会对空数组进行检测。
2.every() 不会改变原始数组。
语法:array.every(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值: 布尔值。如果所有元素都通过检测返回 true,否则返回 false。
5.fill() 使用一个固定值来填充数组。
语法:array.fill(value, start, end)
参数 描述
value 必需。填充的值。
start 可选。开始填充位置。
end 可选。停止填充位置 (默认为 array.length)
返回值:array
6.filter() 检测数值元素,并返回符合条件所有元素的数组。
创建一个新的数组
语法:array.filter(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
注:
1.filter() 不会对空数组进行检测。
2.filter() 不会改变原始数组。
7.find() 返回符合传入测试(函数)条件的数组元素。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
语法:array.find(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
注:
1.find() 对于空数组,函数是不会执行的。
2.find() 并没有改变数组的原始值。
8.findIndex() 返回符合传入测试(函数)条件的数组元素索引。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1
语法:array.findIndex(function(currentValue,index,arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。
注:
1.findIndex() 对于空数组,函数是不会执行的。
2.findIndex() 并没有改变数组的原始值。
9.forEach() 数组每个元素都执行一次回调函数。
语法:array.forEach(function(currentValue, index, arr), thisValue)
参数 描述
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
function函数参数如下:
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值:undefined
注: forEach() 对于空数组是不会执行回调函数的。
forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 some 和 every 来实现。使用 return 语句实现 continue 关键字的效果。
10.from() 通过给定的对象中创建一个数组。
通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。
语法:Array.from(object, mapFunction, thisValue)
参数 描述
object 必需,要转换为数组的对象。
mapFunction 可选,数组中每个元素要调用的函数。
thisValue 可选,映射函数(mapFunction)中的 this 对象。
返回值:数组对象。
11.includes() 判断一个数组是否包含一个指定的值。
语法:
1.arr.includes(searchElement)
2.arr.includes(searchElement, fromIndex)
searchElement 必须。需要查找的元素值。
fromIndex 可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
返回值:布尔值。如果找到指定值返回 true,否则返回 false。
注:
1.如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
2.如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
12.indexOf() 搜索数组中的元素,并返回它所在的位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。
如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
如果在数组中没找到指定元素则返回 -1。
语法:array.indexOf(item,start)
item 必须。查找的元素。
start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
返回值:number 元素在数组中的位置,如果没有搜索到则返回 -1。
13.isArray() 判断对象是否为数组。
如果对象是数组返回 true,否则返回 false。
语法:Array.isArray(obj)
返回值:布尔值,如果对象是数组返回 true,否则返回 false。
14join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
语法:arrayObject.join(separator)。其中,参数separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
返回值:返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
15.keys() 返回数组的可迭代对象,包含原始数组的键(key)。
语法:array.keys()
返回值:一个数组可迭代对象。
16.lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。
与indexOf,只是开始索引值为从后往前
语法:array.lastIndexOf(item,start)
17.map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
map() 方法按照原始数组元素顺序依次处理元素。
语法:array.map(function(currentValue,index,arr), thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数 参数:
参数 描述
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
注:
1.map() 不会对空数组进行检测。
2.map() 不会改变原始数组。
18.pop() 删除并返回数组的最后一个元素
语法:arrayObject.pop()
返回值:arrayObject 的最后一个元素。
说明:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
19.push() 向数组的末尾添加一个或更多元素,并返回新的长度。
语法:arrayObject.push(newelement1,newelement2,....,newelementX)
参数 描述
newelement1 必需。要添加到数组的第一个元素。
newelement2 可选。要添加到数组的第二个元素。
newelementX 可选。可添加多个元素。
返回值:把指定的值添加到数组后的新长度。(改变数组的长度)
说明:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。
20.reduce() 将数组元素计算为一个值(从左到右)。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。
函数参数:
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值
返回值:返回计算结果
注: reduce() 对于空数组是不会执行回调函数的。
21.reduceRight() 将数组元素计算为一个值(从右到左)。
reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。
22.reverse() 颠倒数组中元素的顺序。
语法:arrayObject.reverse()
注:该方法会改变原来的数组,而不会创建新的数组。
23.shift() 删除并返回数组的第一个元素
语法:arrayObject.shift()
返回值:数组原来的第一个元素的值。(改变数组的长度)
说明:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
24.slice() 从某个已有的数组返回选定的元素
语法:arrayObject.slice(start,end)
参数 描述
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
注:
1.可使用负值从数组的尾部选取元素。
2.如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
25.some() 检测数组元素中是否有元素符合指定条件。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
语法:array.some(function(currentValue,index,arr),thisValue)
function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
函数 参数:
参数 描述
currentValue 必须。当前元素的值
index 可选。当前元素的索引值
arr 可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
返回值: 布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
注:
1. some() 不会对空数组进行检测。
2. some() 不会改变原始数组。
26.sort() 对数组的元素进行排序
语法:arrayObject.sort(sortby)。参数sortby 可选。规定排序顺序。必须是函数。
返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明:
1.如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
2.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
27.splice() 删除元素,并向数组添加新元素。
语法:arrayObject.splice(index,howmany,item1,.....,itemX)
参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
返回值:Array,包含被删除项目的新数组(当howmany不为0时)。
说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
注:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
28.toSource() 返回该对象的源代码。
该原始值由 Array 对象派生的所有对象继承。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
语法:object.toSource()
浏览器支持:只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。
29.toString() 把数组转换为字符串,并返回结果。
语法:arrayObject.toString()
返回值:arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。
说明:当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
注:显示方式-数组中的元素之间用逗号分隔。
30.toLocaleString() 把数组转换为本地数组,并返回结果。
语法:arrayObject.toLocaleString()
返回值:arrayObject 的本地字符串表示。
说明:首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
31.unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)
参数 描述
newelement1 必需。向数组添加的第一个元素。
newelement2 可选。向数组添加的第二个元素。
newelementX 可选。可添加若干个元素。
返回值:arrayObject 的新长度。
说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。
该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
注:
1.unshift() 方法不创建新的创建,而是直接修改原有的数组。
2.会改变数组长度
3.unshift() 方法无法在 Internet Explorer 中正确地工作!
32.valueOf() 返回数组对象的原始值
该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
语法:arrayObject.valueOf()
学习时间
2021-08-27
2021-08-29
总结
附:学习记录
JavaScript Array