find:查找数组中有没有包含符合搜索条件的,有则输出此数组元素,没有则undefined
// find
var arr = [1,2,3,4]
var arr1 = arr.find(item => item === 2)
console.log(arr1)
var arr = [{name: 'james', sex: 'man', age: 37},
{name: 'kobe', sex: 'man', age: 19},
{name: 'lina', sex: 'women', age: 40},
{name: 'li men', sex: 'women', age: 19}]
var arr1 = arr.find(e => e.name === 'james') //{age: 37,name: "james",sex: "man"}
indexof为返回在数组(字符串)中可以找到一个给定元素的第一个索引,如果不存在则返回-1。
reduce:
reduce为遍历数组进行叠加
findIndex:
数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
forEach:
forEach为遍历数组,可以理解为加强的for循环,都是对item进行遍历。
也可以新建空数组把arr的数组放进去,并且可以加入一些对item的修改:
2.map:
对forEach的遍历map也可以做到,而且map功能强大,可以对数组遍历,数据操作,而且还能不用创建新数组放进去,map直接返回的就是新数组,还可以对每个item加入key,成为键值对类型的数组。
map修改返回的新数组,对原数组不修改,若是对原数组修改需要进行赋一下
先创建数组(后面方法都使用此数组)
若是想修改item里的具体某个属性就需要先把属性修改再return出去即可。
或者写为拷贝形式都可以实现:
若是只想得到数组中对象的某一个属性则可以只返回那个属性
若是只想改变某个属性则可以借助下标index来操作,如改变index为3的name改为true,其他改为false
注意:若是想改变单个的name,其他不变可以用
var arr2 = [{name: 'james', sex: 'man', age: 37},
{name: 'kobe', sex: 'man', age: 19},
{name: 'lina', sex: 'women', age: 40},
{name: 'li men', sex: 'women', age: 19}]
var id = 3
var arr2 = arr2.map((item,index)=>{
// return ({
// ...item,
// name: index === id
// })
if (index == id){
item.name = 'lin'
}
return item
})
console.log(arr2)
filter:
filter过滤是经常在开发中用到的对数据进行处理的方法:
如:输出age大于19的数组:
var arr2 = [{name: 'james', sex: 'man', age: 37},
{name: 'kobe', sex: 'man', age: 19},
{name: 'lina', sex: 'women', age: 40},
{name: 'li men', sex: 'women', age: 19}]
var arr2 = arr2.filter((item) =>{
// if (item.age == 19){ //因为这个判断返回的是Boolean值,所以可以直接用return简写
// return true
// }
return item.age == 19
})
console.log(arr2)
some:
遍历所有的数组,有一真则为真,有点像includes,但是some需要return,includes不需要retrue
如some:
arr3 = arr2.some((item) =>{
return item.sex === 'man'
})
console.log(arr3)
includes
var arr2 = ['man', 'women', 'sex']
arr3 = arr2.includes('man')
console.log(arr3, '====')
every:
遍历所有的数组,有一假的则为假,全部为真才为真
arr3 = arr2.every((item) =>{
return item.sex === 'man'
})
console.log(arr3)
额外提一下:
es6新增了字符串(针对字符串)用法startsWith,endWith还有去除空格的trim方法: