Javascript 之 Array - fill()、find()、findIndex()

Javascript 之 Array - fill()、find()、findIndex()

只能抽点空闲时间来写博文,所以打算将 数组Array 分为几个部分来写
后续这里会添加其他部分的链接
在这里插入图片描述

1 数组的定义

var arr1 = [1,2,3]               // 隐式创建
var arr2 = new Array(4,5,6)      // 直接实例化
var arr3 = new Array(4)          // 创建数组并指定长度
var arr4 = [undefined,undefined,undefined,undefined]
console.log(arr1)
console.log(arr2)
console.log(arr3)
console.log(arr3[0])
console.log(arr3==arr4)  // false  因为数组为引用类型

效果
在这里插入图片描述
2. 数组的方法
2.1 fill() - ES5
底层
在这里插入图片描述
关于vs code 如何查看底层

// fill(value, start, end)  // 后两个可有可无
var arr5 = new Array(5).fill(1)  // 创建被填充初始值
console.log(arr5)
var arr6 = [2,2,2,2,2,2].fill(1,3) 
console.log(arr6) // 从下标3开始到最后 值被替换为1
var arr7 = [2,2,2,2,2,2].fill(1,3,5) 
console.log(arr7) // 从下标3开始到最后 到下标5 但是不包括下标5
// 关于start和end 当然还有另外一种记忆方法
// 1.  start为 下标开始位置
// 2.  长度为 end - start 若省略 end 则end为数组长度
// 3.  被替换的值为 value
var arr8 = [2,2,2,2,2,2].fill(1,3,3) 
console.log(arr8)  // 由于3-3=0  所以没有元素被替换  输出 [2,2,2,2,2,2]

效果
在这里插入图片描述
2.2 find() -ES5
底层
在这里插入图片描述
显然当第一参数无返回值时 将会 return undefined

// find()
var arr9 = [1,2,3,4,5,6]
// 由底层可知  func9 可传入3个参数
function func9(value, index, obj){
    console.log(value, index, obj)
}
arr9.find(func9, this)
// 输出
// 1 0 [ 1, 2, 3, 4, 5, 6 ]
// 2 1 [ 1, 2, 3, 4, 5, 6 ]
// 3 2 [ 1, 2, 3, 4, 5, 6 ]
// 4 3 [ 1, 2, 3, 4, 5, 6 ]
// 5 4 [ 1, 2, 3, 4, 5, 6 ]
// 6 5 [ 1, 2, 3, 4, 5, 6 ]
// value 为当前元素   index 为下标  obj为数组本身
function func10(value, index, obj){
    if(value>3) {
        // return false  //  输出 undefined
        // return 0  // 输出 undefined
        return index
    }
}
// 显然当有值返回时  就会返回第一个满足条件的元素
console.log(arr9.find(func10, this))

2.3 findIndex() - ES5
底层
在这里插入图片描述

// findIndex()  与find 类似  只不过 返回的是 第一个满足条件的元素的下标
var arr11 = [1, 2, 3, 4, 3, 9, 3]
function func11(value, index, obj) {
    if(value===3) {
        // return false  //  输出 undefined
        // return 0  // 输出 undefined
        return 1
    }
}
console.log(arr11.findIndex(func11, this))  // 第一个 3 的位置在下标2

怎么既返回元素的值又返回对应下标

// 怎么既返回元素的值又返回对应下标
var arr11 = [1, 2, 3, 4, 3, 9, 3]
Array.prototype.hujiajia = function(args,self){

    if(!Array.isArray(this)){  // 判断是不是数组
        console.log('error')
    } else {
        return [this.find(function(a,b,c){
            if(a==args){
                i = b
                return 1
            }
        },self),i]
    }
}
console.log(arr11.hujiajia(9,this))  // 输出 [9,5]

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值