Js 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()

filter()

  • filter 接受三个参数:Array的某个元素、元素的位置和数组本身
//在数组中只删掉偶数,只保留奇数
var arr=[1,2,3,4,5]
var r = arr.filter((item,index,arr)={return item % 2 !== 0; })
  • 利用filter去重


 var  r,
 arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
 r = arr.filter(function (element, index, self) { 
     return self.indexOf(element) === index;
 });

去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了

map()

  • map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
  • map() 不会对空数组进行检测。
  • map() 不会改变原始数组。
    *接受三个参数 currentValue必须,index可选,arr 可选
//从接口得到数据 res:
let r = res.map(item => {
    return {
        title: item.name,
        sex: item.sex === 1? '男':item.sex === 0?'女':'保密',
        age: item.age,
        avatar: item.img
    }
})

some()

  • 方法用于检测数组中的元素是否满足指定条件(函数提供)。
  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。
  • some() 不会对空数组进行检测。
  • some() 不会改变原始数组。
  • 接受三个参数 currentValue必须,index可选,arr 可选
var arr=[2,3,5,7,8,3,9];
arr.some((element, index, self)=>{
    return (element >= 10);
})
//var arr=[2,3,5,7,8,3,9];  返回false
//var arr=[12,3,5,17,8,3,9];  返回true

every()

  • 检测数组所有元素是否都符合指定条件(通过函数提供)。
  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true。
  • every() 不会对空数组进行检测。
  • every() 不会改变原始数组。
  • 接受三个参数 currentValue必须,index可选,arr 可选
var arr=[2,3,5,7,8,3,9];
arr.evey((element, index, self)=>{
    return (element >= 10);
})
//var arr=[2,3,5,7,8,3,9];  返回false
//var arr=[12,3,5,17,8,3,9];  返回false
//var arr=[12,13,15,17,18,13,19];  返回true

forEach()

  • 和map不同点: forEach没有返回值
var ary = [12,23,24,42,1];  
var res = ary.forEach(function (item,index,input) {  
       input[index] = item*10;  
})  
console.log(res);//--> undefined;  
console.log(ary);//--> 通过数组索引改变了原数组;

lastIndexOf()

  • 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
  • 接受两个参数 searchvalue必须,fromindex可选。
  • lastIndexOf() 方法对大小写敏感!
  • 如果要检索的字符串值没有出现,则该方法返回 -1。
var str = 'xxa xxa xxax';
var endA2 = str.lastIndexOf('a',7) //查找的是字符串前7位之内的最后一个a

indexOf()

  • 搜索是正向进行的
var str = 'xxa xxa xxax';
var endA2 = str.indexOf('a',5) //查找的是字符串前5位之后的第一个a

附注:

substring()
  • stringObject.substring(start,stop)
  • 返回的子串包括 start 处的字符,但不包括 stop 处的字符。
  • 如果省略该stop参数,那么返回的子串会一直到字符串的结尾。
  • 不接受负的参数
var str1="Hello world!"
document.write(st1r.substring(3))//lo world!
var str2="Hello world!"
document.write(str2.substring(3,7))//lo w
slice()
  • stringObject.slice(start,end)
  • start -1 指字符串的最后一个字符,-2 指倒数第二个字符
  • end 如果是负数,那么它规定的是从字符串的尾部开始算起的位置
  • 返回一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
var str1="Hello happy world!"
document.write(str1.slice(6))//happy world!
var str2="Hello happy world!"
document.write(str2.slice(6,11))//happy
var str3="Hello happy world!"
document.write(str3.slice(-6,-1))//world
substr()
  • stringObject.substr(start,length)
  • start -1 指字符串的最后一个字符,-2 指倒数第二个字符
  • 子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串
  • 返回一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符
var str1="Hello world!"
document.write(str1.substr(3))//lo world!
var str2="Hello world!"
document.write(str2.substr(3,7))//lo worl
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容