js经典实例 第二章

第二章 js数组

问题:想要在数组中搜索一个特定值,并且返回他的索引

indexOf :检测首次出现的位置

lastIndexOf:检测最后一次出现的位置

f8103a3a377b43422b0a474535dfe951c14.jpg

两个方法都接受一个开始索引,它设定了从哪里开始搜索

问题:用concat()和apply()将一个二维数组扁平化

var arr=[]
arr[0]=["ABC ","ert"]
arr[1]=["eetr","ewrer"."ererr"]
arr[2]=["line","erey"]
var newarr=arr.concat.apply([],arr)
console.log(newarr[5])  //line

二维数组的扁平化就是将二维数组变成一维

377c56521e8eab3fc1fd2336845a8ce0da5.jpg

问题,想要在数组中找到给定的出现值,删除掉该元素,或者用另一个值替换他

var arr=["dog","cat","seal","walrus","lion","cat"]
animals.splice(animals,indexOf("walrus"),1)  //dog,cat ,seal,lion,cat
animals.splice(animals.lastindexOf("cat"),1,"monkey")  //dof,cat,lion,monkey

splice()方法接受三个参数,第一个参数是索引值,第二个是删除的数目,如果不写,则删除到最后(包括索引处的值) ,如果设置为零则不删除,第三个参数是替换元素

问题:想要从一个数组提取一部分,但是保持最初的数组完整性

js提供了一个slice()方法,来提取一个已有数组的一部分的一个浅拷贝,slice(start,end),start,end为数组下标,前闭后开

slice()方法复制一个已有的数组的一部分,返回一新的数组,他执行浅拷贝,也就是说,如果数组元素是对象,两个数组都指向相同的对象,对数组中的对象进行修改,会在旧的数组的相同的对象中反映出来

var marr=[]
marr[0]=["apple","pear"];
marr[1]=["strawberry",'lemon'];
marr[2]=["lime","peach","berry"];
var narr=marr.slice(1,2) 
console.log(marr[1]) //[strawberry,lemon]
narr[0][0]="raspberry"
console.log(narr[0])  // ["raspberry","lemon"]
console.log(marr[1])  // ["raspberry","lemon"]

如果元素数组是一个基本数据类型,例如字符串或数字,就不会产生修改一个影响另一个的情况

arr.forEach()

forEach()方法接受一个回调函数作为参数

而这个回调函数有三个参数

item 数组项 index 索引值 array 数组自身

var arr=["ab","bb","cd","cc","ab","dd","ab"]
function replace(item,index,self){
    if(item=="ab"){
        arr[index]="**"
    }
}
arr.forEach(replace)
console.log(arr)// ["**","bb","cd","**","cc","**","dd","**"]

注意:不要给forEach的函数返回一个值,这个值会被被丢弃

问题:想要把一个十进制的数组转换为一个新的数组,其中他们都是等价的十六进制数

toString(16) 可以可将十进制转为十六进制

var decArray=[23,255,122,5]
var hexarray=decArray.map(function(element){
    return element.toString(16)
})
console.log(hexArray)  //["17","ff","7a","5"]

forEach()和map()的区别

map()方法的结果是一个新的数组,而不是修改最初的数组,因此,使用forEach()的时候不会反回一个值,但是使用map()的时候必须反回一个值

filter()方法也是接受一个回调函数应用于每一数组元素

作为参数传递给filter()方法的函数返回一个布尔值,true或false,这个返回值决定了该数组元素是否添加到一个新的数组当中,如果函数返回true,将会添加,否则删除

var charSet=["**","bb","cd","%%"]
​
var newArray=chartSet.filtert(function(element){
​
    return(element !=="**")
​
})

ES6解构赋值来简化数组赋值

var stateValues=[459,144,96,34,0]
var [a,b,c,d]=statevalues
console.log(b)   //144

转载于:https://my.oschina.net/u/4004801/blog/3009777

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值