JavaScript数组常用方法

目录

1.isArray()

(1)定义和用法

(2)语法

 (3)代码实例

(4)注意事项

2.push()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

3.pop()

(1)定义和用法

(2)语法

(3)实例

(4)注意事项

4.unshift()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

5.shift()

(1)定义与用法

(2)语法

(3)代码实例

6.find()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

7.includes()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

8. findIndex()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

9.indexof()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

indexOf 与 findIndex 区别

10.lastIndexOf()

(1)定义和用法

(2)语法

(3)代码实例

(4)注意事项

11.filter()

(1)定义和作用

(2)语法

  (3)代码实例

(4)注意事项

12. map()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

13.forEach()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

14.reduce()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

15.some

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

16.every()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

17.join()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

18.split()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

19.slice()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

20.splice()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

21.contat()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

22.sort()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

23.reverse()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

24.fill()

(1)定义和作用

(2)语法

(3)代码实例

(4)注意事项

25.数组操作keys()、values()、entries()的使用与区别


1.isArray()

(1)定义和用法

isArray() 方法确定对象是否为数组。

如果对象是数组,则此函数返回 true,否则返回 false

(2)语法
Array.isArray(obj)    //obj, 必需。需测试的对象。
 (3)代码实例
//返回的都是true

console.log(Array.isArray([]));
console.log(Array.isArray([1,2,3]));
console.log(Array.isArray(new Array()));
// 下面的函数调用都返回 false
console.log(Array.isArray());
console.log(Array.isArray(null));
console.log(Array.isArray(undefined));
console.log(Array.isArray('Array'));
console.log(Array.isArray(true));
var obj = {

    a: 1,

    b: 2};
(4)注意事项

  返回值类型是布尔值。如果对象是数组则返回 true,否则返回 false

2.push()

(1)定义和用法

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

(2)语法
array.push(item1, item2, ..., itemX)
(3)代码实例
var arr = []var length = arr.push('first')

console.log(arr) // ['first']

console.log(length)  // 1 
(4)注意事项

  push方法会改变原有数组,且返回改变后数组的长度

3.pop()

(1)定义和用法

pop() 方法用于删除并返回数组的最后一个元素。即pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值

(2)语法
array.pop()
(3)实例
const fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.pop();   //  "Mango"
(4)注意事项

如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。

4.unshift()

(1)定义和用法

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

即unshift() 方法将把它的参数插入 数组 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。

(2)语法
array.unshift(item1, item2, ..., itemX)
(3)代码实例
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var after = fruits.unshift("Lemon", "Pineapple");
console.log(after)  //6
console.log(fruits) //[ 'Lemon', 'Pineapple', 'Banana', 'Orange', 'Apple', 'Mango' ]
(4)注意事项

  返回值是把指定的值添加到数组的开头之后的新长度

5.shift()

(1)定义与用法

shift() 方法移除数组的第一个元素,并返回所删除的元素

(2)语法
array.shift()
(3)代码实例
const fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.shift();   // 返回 "Banana"

(4)注意事项

  • 无参数。
  • shift() 方法会改变数组的长度。
  • shift 方法的返回值是被移除的项目。
  • shift() 方法会改变原始数组。

6.find()

(1)定义和用法

find() 方法是 JavaScript 中用于在数组中查找特定条件的第一个元素,如果找到一个元素使得回调函数返回true,则该元素作为结果返回;如果没有找到这样的元素,则返回undefined,该函数不会修改原始数组

(2)语法
array.find(function(currentValue, index, arr),thisValue)
(3)代码实例
 
        let test = [1, 2, 3, 4, 5,6];
        let a = test.find(item => item > 3);
        console.log(a); //4
 
        let c = test.find(item => item == 0);
        console.log(c); //undefined
(4)注意事项
  • find() 方法会遍历整个数组,直到找到满足条件的元素或者遍历完整个数组。
  • 如果数组为空,那么返回 undefined。
  • 当多个元素符合条件时,find() 方法只会返回第一个符合条件的元素。
  •  find() 对于空数组,函数是不会执行的。
  •  find() 并没有改变数组的原始值

7.includes()

(1)定义和用法

includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

(2)语法
arr.includes(searchElement, fromIndex)
searchElement必须。需要查找的元素值。
fromIndex可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
(3)代码实例
const arr = ['a','b','c','d','abc']
      console.log(arr.includes('a'),arr.includes('e')); 
      //   结果 true,false
(4)注意事项

该方法的第二个参数表示搜索的起始位置,默认为 0 。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为 -3 ,但数组长度为 2),则会重置为从 0 开始。

console.log([1, 2, 3].includes(3, 2))  // true
 
console.log([1, 2, 3].includes(1, -2)); // false

8. findIndex()

(1)定义和用法

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1

(2)语法
arr.findIndex(callback[, thisArg])

//针对数组中的每个元素, 都会执行该回调函数, 执行时会自动传入下面三个参数:

//element 当前元素。

//index  当前元素的索引。

 //array  调用findIndex的数组。

//thisArg 可选。执行callback时作为this对象的值.
(3)代码实例
const arr = [1, 2, 3, 4, 5, 3, 3, 2, 4, 5 ]
 
// 可以这么写
 
const index = arr.findIndex(item => {
    return item > 2
})
 
console.log(index) // 2
 
// 也可以这么写
 
const index = arr.findIndex(item => item > 2)
 
console.log(index) // 2
(4)注意事项
  •     返回值是首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1
  • 这要注意的是findIndex()会给数组中的每一项执行一个函数来判断是否满足表达式,如果满足条件后,剩下的元素则不再执行
  •     如果你需要非基本类型数组(例如对象)的索引,或者你的查找条件比一个值更复杂,可以使用这个方法。

9.indexof()

(1)定义和用法

indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。

(2)语法
arr.indexOf(searchElement[, fromIndex])

searchElement是要查找的元素,fromIndex是可选参数,表示从哪个索引开始查找。当找到指定元素时,indexof方法会返回该元素所在数组中的索引,如果没有找到则返回-1。

(3)代码实例
let arr = [1,2,3,4,5,4,3,2,1];
 
console.log(arr.indexOf(1)); // 没有填fromIndex所以默认从索引为0的位置开始往后查找
// 0
console.log(arr.indexOf(1,1)); // 表示从索引为1的位置开始往后查找
// 8
(4)注意事项
indexOf 与 findIndex 区别
  • indexOf :查找值作为第一个参数,采用 === 比较,更多的是用于查找基本类型,如果是对象类型,则是判断是否是同一个对象的引用
  • findIndex :比较函数作为第一个参数,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂

10.lastIndexOf()

(1)定义和用法

lastIndexOf()方法可以返回某个子字符串在字符串中最后出现的位置。

(2)语法
stringObject.lastIndexOf(searchvalue,fromindex)
参数描述
searchvalue必需。规定需检索的字符串值。
fromindex可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。
(3)代码实例
let str = "Hello world!"

console.log(str.lastIndexOf("Hello"))//0
console.log(str.lastIndexOf("World"))//-1

(4)注意事项
  •   indexOf和lastIndexOf语法是一样的,但查找的顺序相反,indexOf是从前往后查,而lastIndexOf是从后往前查。
  •   返回值:如果检索到就返回所在的位置,没有检索到则返回-1

11.filter()

  • (1)定义和作用

filter过滤器:用于把Array的某些元素过滤掉,返回剩下的元素

filter()它用于把Array的某些元素过滤掉,然后返回剩下的元素。

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

(2)语法
array.filter(function(currentValue,index,arr), thisValue)

参数说明

  • function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数
  • thisValue 可选。执行 function(currentValue,index,arr) 时的用于 this 的值。
  • currentValue 必须。当前元素的值
  • index 可选。当前元素的索引值
  • arr 可选。当前元素属于的数组对象
  • thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined";
正常函数写法:
filter(function(item){
    return 筛选条件
})
回调函数写法:
filter(item => 筛选条件)
这种写法可以省略function、()、{}、return ;
当然需要满足一定的条件:{}里只有一句代码、()只有一个参数;
filter(item => 筛选条件)

 参数:
filter参数是一个回调函数
回调函数的参数是item,这个item指的是每一项元素:
返回结果是数组 
  (3)代码实例
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let res = nums.filter((num) => {
  return num > 5;
});

console.log(res);  // [6, 7, 8, 9, 10]
(4)注意事项
  • filter() 不会对空数组进行检测。
  • filter() 不会改变原始数组。

12. map()

(1)定义和作用

  map() 方法是数组原型的一个函数,该函数用于对数组中的每个元素进行处理,将其转换为另一个值,最终返回一个新的数组,该数组包含了经过处理后的每个元素

(2)语法
array.map(callback(currentValue[, index[, array]])[, thisArg])
  • callback :表示对数组中的每个元素要执行的函数。该函数包含三个参数:
  • currentValue:表示正在处理的当前元素。
  • index:可选参数,表示正在处理的当前元素的索引。
  • array:可选参数,表示正在处理的当前数组。
  • thisArg:可选参数,表示执行 callback 函数时的 this 值。
     
(3)代码实例
//参数分别为item(当前每一项),index(索引值),index可省略不写
let b=[1,2,3].map((item,index)=>{
   return item*2
})
console.log(b)//[2,4,6]

简写成
let b=[1,2,3].map((item,index)=> item*2 )
console.log(b)//[2,4,6]

(4)注意事项
  • map()不会对空数组进行检测
  • map()不会改变原始数组(返回新数组)
  • map()不会为数组中缺少的元素调用回调函数
  • 除数组对象外,map()可由具有length属性且具有已按数字编制索引名的任何对象使用(如字符串对象)

13.forEach()

(1)定义和作用

forEach 更多的用来遍历数组、集合,forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数,总返回undefined

(2)语法

(3)代码实例
var array = ['a', 'b', 'c'];

array.forEach(function(element) {
  console.log(element);
}); //输出为a b c
(4)注意事项
  • map()和foreach()的区别
  • forEach()会修改原来的数组。map() 会分配内存空间存储新数组并返回,forEach() 不会返回数据
  • forEach() 的执行速度 < map() 的执行速度
  • forEach() 适合并不打算改变数据的时候,而只是想用数据做一些事情---比如存入数据库或者打印出来。 map() 适合你要改变数据值的时候

14.reduce()

(1)定义和作用

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 方法对数组中的每个元素执行一个由您提供的reduce函数(升序执行),将其结果汇总为单个返回值。reduce方法可做的事情特别多,就是循环遍历能做的,reduce都可以做,比如数组求和、数组求积、数组中元素出现的次数、数组去重等等。

(2)语法
arr.reduce(function(prev,cur,index,arr){
...
}, init);

参数:

  • prev 必需。累计器累计回调的返回值; 表示上一次调用回调时的返回值,或者初始值 init;
  • cur 必需。表示当前正在处理的数组元素;
  • index 可选。表示当前正在处理的数组元素的索引,若提供 init 值,则起始索引为- 0,否则起始索引为1;
  • arr 可选。表示原数组;
  • init 可选。表示初始值。
(3)代码实例
let arr = [1,2,3,4,5]
console.log(arr.reduce((a,b) => a + b)) // 15
console.log(arr.reduce((a,b) => a * b))  // 120
(4)注意事项

 reduce() 对于空数组是不会执行回调函数的。

15.some

(1)定义和作用

some方法的作用:判断数组中至少存在一个元素满足指定条件(函数提供)

some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false
(2)语法
array.some(function(currentValue,index,arr),thisValue)
(3)代码实例
var a = [11,50,40,3,5,80,90,4]
function some(item,index,array){
    console.log(item); //11
    return item>10
}
console.log(a.some(some)); //true


或者简写成
var a = [11,50,40,3,5,80,90,4]
console.log(a.some(item =>item>10))  //true
(4)注意事项
  • 返回的是true或false ,而不是具体的元素
  • some如果遇到 true 就不在执行了。
  • 如果都为 false 返回false。
  • 不会改变原数组

16.every()

(1)定义和作用
  • every()方法用于检测数组中的所有元素是否都满足指定条件(该条件为一个函数)。
  • every()方法会遍历数组的每一项,如果有有一项不满足条件,则表达式返回false,剩余的项将不会再执行检测;如果遍历完数组后,每一项都符合条,则返回true。
(2)语法
array.every(function(currentValue,index,arr), thisValue)

参数说明:

  • 第一个参数为一个回调函数,必传,数组中的每一项都会遍历执行该函数。
  • currentValue:必传,当前项的值
  • index:选传,当前项的索引值
  • arr:选传,当前项所属的数组对象
  • 第二个参数thisValue为可选参数,回调函数中的this会指向该参数对象。
(3)代码实例

var a = [11,50,40,3,5,80,90,4]
console.log(a.every(item =>item>10))  //false
(4)注意事项
  • every() 不会对空数组进行检测
  • every() 不会改变原始数组

17.join()

(1)定义和作用

  join() 方法主要是用于把数组中的所有元素转换一个字符串
 元素是通过指定的分隔符进行分隔的。

(2)语法
arrayObject.join(separator);

//separator可选,指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符
(3)代码实例
let s = Array('Apple','is','on','my','table')
console.log((s.join()))     //Apple,is,on,my,table
console.log((s.join(" ")))  //Apple is on my table
console.log((s.join("/")))  //Apple/is/on/my/table
(4)注意事项

如果省略分隔符,则默认使用逗号作为分隔符

18.split()

(1)定义和作用

split() 方法用于把一个字符串分割成字符串数组

(2)语法

(3)代码实例
var arr="apple"
console.log(arr.split(""))  //[ 'a', 'p', 'p', 'l', 'e' ]
console.log(arr.split("",4)) //[ 'a', 'p', 'p', 'l' ]

var arr = "a:b:c:d:e:f"
console.log(arr.split(":"))  //[ 'a', 'b', 'c', 'd', 'e', 'f' ]
(4)注意事项
  • 该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。
  • 返回的数组中的字串不包括 separator 自身。

19.slice()

(1)定义和作用

slice() 方法用于返回一个包含该数组的一部分的新数组,它不修改原始数组,而是返回一个新数组

slice 方法可以用于数组和字符串,表示 “切片”。

(2)语法
arr.slice([begin[, end]])
  • begin:  从该索引处开始提取原数组中的元素,如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取, slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略  begin ,则  slice 从索引 0 开始。
  • end:  在该索引处结束提取原数组元素(从0开始)。 slice 会提取原数组中索引从  begin 到  end 的所有元素(包含begin,但不包含end)。
(3)代码实例
var str=["a","b",3,"c","apple","d"]
console.log((str.slice(-2)))   //[ 'apple', 'd' ]
console.log((str.slice(2)))    //[ 3, 'c', 'apple', 'd' ]
console.log((str.slice(1,4)))  //[ 'b', 3, 'c' ]


var str="Hello happy world!"
console.log((str.slice(6,11))) //happy
(4)注意事项

不修改原数组

20.splice()

(1)定义和作用

splice 方法用于数组或伪数组,根据参数个数和形式的不同,可以在数组中删除指定元素或者插入元素、替换元素。

(2)语法
1.参数个数为1的情况
arr.splice(i)
2.参数个数为2的情况
arr.splice(i, j)
3.参数个数为3或3个以上的情况
a.splice(i, j, e1, e2, ...)

i:整数,表示索引的起始位置
j:整数,表示删除的个数
e1、e2、...:删除相应元素之后要添加的元素
当 splice 方法有 3 个参数时,表示从索引为 i 位置开始删除 j 个元素,然后在从 i 位置添加 e1,e2,...,返回删除的元素,原地修改。

若 j 为 0,则表示一个元素也不删除,则元素从 i 前一个位置开始插入
若 j > 0,则表示从 i 位置开始(包括 i 位置)删除 j 个元素,然后从 i 后面开始插入。
(3)代码实例
var a = [1, 2, 3, 4, 5]
a.splice(-2, 2)
console.log(a) // [1, 2, 3]

var a = [1, 2, 3, 4, 5]
a.splice(1, 1, 'a', 'b', 'c')
console.log(a)   //[1, 'a', 'b', 'c',3, 4, 5]
(4)注意事项

 使用的时候很容易混淆 splice 和 slice 方法,记住 splice 方法只能用于数组,而 slice 方法可以用于数组和字符串,表示 “切片”。

21.contat()

(1)定义和作用

   concat()方法是用于连接两个或多个数组

(2)语法
array1.concat(array2,array3,...,arrayX)
(3)代码实例
var a = ["hello", "word"];
var b = ["java", "C++", "C#"];
var c = ["name"];
var d = a.concat(c,b);
console.log(d)  //[ 'hello', 'word', 'name', 'java', 'C++', 'C#' ]
(4)注意事项

  该方法不会改变现有的数组

22.sort()

(1)定义和作用

 sort() 方法用于对数组的元素进行排序。在默认情况下,sort()方法按升序排列数组——即最小的值位于最前面,最大的值排在最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串,

(2)语法
语法:arrayObject.sort(sortby)
  •   sortby:可选。规定排序顺序。必须是函数。
  •    返回值:数组在原数组上进行排序,不生成副本。
  •  如果调用该方法时没有使用参数,按照字符编码的顺序进行排序。

Sort()比较函数排序

sort还可接收一个比较函数作为参数,以方便指定哪个值在前,哪个值在后。

比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个之后则返回一个正数。

(3)代码实例

升序

function compare(a,b){
	return a-b;
}
var values = [0,8,1,10,7];
values.sort(compare);
console.log(values);  //[ 0, 1, 7, 8, 10 ]

降序

function compare(a,b){
	return b-a;
}
var values = [0,8,1,10,7];
values.sort(compare);
console.log(values);  //[ 10, 8, 7, 1, 0 ]
(4)注意事项
  • return a-b;时,为升序排序。
  • return b-a;时,为降序排序。

23.reverse()

(1)定义和作用

  reverse()方法用于反转(颠倒)数组中的元素。

(2)语法
arrayObject.reverse()
(3)代码实例
var arr = ['aa1', 'bb2', 'cc3'];

console.log(arr.reverse());  //[ 'cc3', 'bb2', 'aa1' ]
console.log(arr);  //[ 'cc3', 'bb2', 'aa1' ]
(4)注意事项

  该方法会改变原数组。

24.fill()

(1)定义和作用

  fill()方法的作用是使用一个固定值来替换数组中的元素。该固定值可以是字母、数字、字符串、数组等等。

(2)语法
    array.fill(value, [start_index], [end_index]);


start_index是一个可选参数,它指定填充数组的起始索引,其默认值为0。其中第2、3个参数是可选的。表示替换的起始位置和结束位置(注:不包含结束位置本身所在的元素)

(3)代码实例
var arr3 = [12,23,34,45,56];
arr3.fill(123);
console.log(arr3)  // [123,123,123,123,123]

const arr = [1, 2, 3, 4, 5, 6, 7]
console.log(arr.fill(0, 2, 4)); //[1, 2, 0, 0,5, 6, 7]
(4)注意事项
  • 返回修改后的数组
  • 如果start为负数,则开始索引被计算为length+start
  • 如果end为负数,则结束索引被计算为length+end
  • start和end参数是可选的,默认值分别为0和arr.length
  •  当一个对象被传递给fill方法时,填充数组的是这个对象的引用

25.数组操作keys()、values()、entries()的使用与区别

都以数组形式返回

1、Object.keys(Array ):对键名的遍历。
2、Object.values( Array):对键值的遍历。
3、Object.entries( Array):对键值对的遍历。
//对象
var test1 = {aa:2,bb:4,cc:7}
    console.log(Object.keys(test1));       //[ 'aa', 'bb', 'cc' ]
    console.log(Object.values(test1));     //[ 2, 4, 7 ]
    console.log(Object.entries(test1));    //[ [ 'aa', 2 ], [ 'bb', 4 ], [ 'cc', 7 ] ]
//数组
var test2= [1,2,3,6]
    console.log(Object.keys(test2));     //[ '0', '1', '2', '3' ]
    console.log(Object.values(test2));   //[ 1, 2, 3, 6 ]
    console.log(Object.entries(test2));  //[ [ '0', 1 ], [ '1', 2 ], [ '2', 3 ], [ '3', 6 ] ]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值