1
头图

some数组的方法

一真即真 只要有一个是真 其后面的元素将不再遍历。

遍历数组中的每一个成员 让其去执行回调函数
(forEach 没有返回值 ) some有返回值 返回值是bool
返回值为true 表示某一个成员满足了 回调中设置的过滤规则 此时会终止整个循环

clipboard.png

返回值为false 表示这个数组中没有符合条件的成员 则返回false

clipboard.png

every

总结:一假即假 ,而且只要有一个元素是假,其后面的元素将不再遍历。

`var` `computers = [`

 `{ name:` `"mac"``, ram: 32 },`

 `{ name:` `"mac"``, ram: 8 },`

 `{ name:` `"IBM"``, ram: 16 },`

 `{ name:` `"IBM"``, ram: 64 }`

`];`

`//判断每一个元素的ram是否都大于16`

`var` `everyBoolan = computers.every(``function``(item) {`

 `return` `item.ram > 16;`

`});`

`console.log(everyBoolan);` `//结果:false`




`//判断元素的ram是否都大于16`

`var` `someBoolean = computers.some(``function``(item) {`

 `return` `item.ram > 16;`

`});`


`console.log(someBoolean);``//结果: true`

findIndex 数组的方法

遍历数组中的每一个成员 让其去执行回调函数
查找索引 返回值是一个数字 也就是索引值
如果成员满足回调函数的条件 则返回第一个满足条件成员的索引 同时 终止整个循环

clipboard.png

如果没有满足条件的 则返回-1

clipboard.png

filter 数组的方法

遍历数组中的每一个成员 让其去执行回调函数
filter数组的方法 返回值是一个新的数组
当数组中的成员 去执行回调函数中的条件时 如果满足条件
那么这个成员会被添加到一个新的数组中

clipboard.png

没有符合条件的返回空数组

clipboard.png

注意 filter方法对原数组没有影响

Array.includes()函数

判断数组元素中是否包含某个字符串或数字
它直接返回true或者false表示是否包含元素,对NaN一样能有有效。

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log( arr1.includes('c'))//true

console.log('%s', arr1.includes(NaN)) //true

Find方法

返回符合条件的第一个数组元素值,如果没有符合条件的则返回undefined。

const m = messages.find((msg)=> msg.id===id)

reduce

arr.reduce(callback,[initialValue])
callback (执行数组中每个值的函数,包含四个参数)

    1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    2、currentValue (数组中当前被处理的元素)
    3、index (当前元素在数组中的索引)
    4、array (调用 reduce 的数组)

initialValue (作为第一次调用 callback 的第一个参数。)
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
    console.log(prev, cur, index);
    return prev + cur;
})
console.log(arr, sum);

数组的map方法

数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该方法返回一个新数组,对原数据没有影响。

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

map()和forEach()

它们之间的主要区别在于是否有返回值,所以你会希望使用 map 来制作一个新的数组,而使用 forEach 只是为了映射到数组上。

数组的flat(),flatMap()

float()

flat()方法将子数组的成员取出来,添加在原来的位置。
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

如果原数组有空位,flat()方法会跳过空位。

[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

Array.flatMap

flatMap()方法对原数组的每个成员执行一个函数,相当于执行Array.prototype.map(),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]

flatMap()只能展开一层数组。

image.png

splice

splice从数组中添加或者删除项目,返回被删除的项目,同时也会改变原数组。
splice(index,howmany,item1,...itemX)

splice是JS中数组功能最强大的方法,它能够实现对数组元素的删除、插入、替换操作,返回值为被操作的值

  splice删除:  color.splice(1,2) (删除color中的1、2两项);

  splice插入:  color.splice(1,0,'brown','pink') (在color键值为1的元素前插入两个值);

  splice替换:  color.splice(1,2,'brown','pink')  (在color中替换1、2元素);

  • index参数:必须,整数,规定添加或者删除的位置,使用负数,从数组尾部规定位置。
  • howmany参数:必须,要删除的数量,如果为0,则不删除项目。
  • tem1,...itemX参数:可选,向数组添加的新项目。
1指定位置增加项
var array = [1,2,3,4,5];
var array2 = array.splice(1,0,["新增","xinzeng"]);
// 下标1的位置,增加添加的项 
// array [1,["新增","xinzeng"],2,3,4,5]  
// array2 [] 
2删除指定位置,并新增项
var array = [1,2,3,4,5];
var array2 = array.splice(1,1,["新增","xinzeng"]);
// 下标1的位置,删除1项,并新增1项
// array [1,["新增","xinzeng"],3,4,5]  
// array2 [2] 
3 splice(3)
var array = [1,2,3,4,5];
var array2 = array.splice(3);
// 从下标3的位置开始删除
// array [1,2,3]  
// array2  [4,5]

slice

slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变

var color = new Array('red','blue','yellow','black'); var color2 = color.slice(1,2);
alert(color);   //****输出** **red,blue,yellow,black**

alert(color2);   //****输出** **blue;注意:这里只有第二项一个值

HappyCodingTop
526 声望847 粉丝

Talk is cheap, show the code!!