搜索

查看: 3107|回复: 11

[JavaScript] js fill函数填充数组或对象的解决方法

[复制链接]
发表于 2023-5-4 11:47:28 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:47:28 3107 11 看全部
目录
  • js fill函数填充数组或对象的问题
  • 扩展:js--数组的 fill() 填充方法详解
  • 前言
  • 正文
  • 1、fill()  语法
  • 2、fill() 的使用
    js fill函数填充数组或对象的问题
    js 的数组有一个 fill 方法,可以给数组填充数据,这个方法有三个参数,从左到右依次为 要填充的数据,填充的起始位置(默认为0),停止填充的位置(默认是数组的长度),这个方法不改变原数组,如下:
    let arr = [0,0,0,0,0]
    let res = arr.fill(1,1,2)
    console.log(res)    // [0, 1, 0, 0, 0]
    let oneParam = arr.fill(1)
    console.log(oneParam)  // [1,1,1,1,1]
    console.log(arr)   // [0,0,0,0,0]
    问题: 有一次,我根据这个方法想要初始化一个二维数组,如下:
    let arr = new Array(5).fill([])
    我本来是想创建一个长度为5的数组,数组的每一项都是一个空数组,但是我遇到了一个问题,就是这个数组里面的5个数组其实指向的都是一个数组,即fill函数应该是直接我把传递的参数 [] 进行了赋值,所以我给其中一个数组赋值是,发现所有的数组都有值了,所以想要进行二维数组的初始化,不能这么做;
    解决方法: 为了解决这个问题,想到了另外一个方法,就是使用map方法,如下:
    let arr = new Array(5).fill(0).map(item=>[])  
    这里先创建一个长度为5,全为0的数组,然后map这个数组,返回一个空数组,此时每个数组就都不一样了,注意:这个fill(0)也是必要的,因为全为空的数组不会执行map函数

    扩展:js--数组的 fill() 填充方法详解
    前言
      我们知道了很多了初始化数组的方法,但是初始化数组之后,数组中的每一项元素默认为 empty 空位占位,如何对数组这些空位添加默认的元素,ES6提供了 fill() 方法实现这一操作。本文总结数组 fill() 方法的详细使用。

    正文
    1、fill()  语法
      fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。返回修改后的原始数组,不创建新数组。
      使用语法:array.fill( value [,start [,end]]),其中 :
        value 用来填充数组元素的值,必填。
        start 可选起始索引,默认值为0。
        end 可选终止索引,默认值为 this.length。

    2、fill() 的使用
    // 当传入单个参数的时候,该方法会用该参数的值填充整个数组
        var arr1 = new Array(5)
        console.log(arr1.fill(1)); //[1,1,1,1,1]
        var arr2 = [1, 2, 3, 4]
        console.log(arr2.fill(0)); //[0,0,0,0]
        // 当传入两个参数的时候,第一个参数为填充的元素,第二个为填充元素的起始位置
        var arr3 = [0, 1, 2, 3, 4, 5, 6]
        console.log(arr3.fill(1, 3)); //[0,1,2,1,1,1,1]
        // 当传入三个参数的时候,第一个参数为填充的元素,第二个参数和第三个参数分别指填充元素的起始和终止位置,不修改终止位置元素
        var arr4 = [0, 1, 2, 3, 4, 5]
        console.log(arr4.fill(1, 3, 5)); //[0,1,2,1,1,5]
       
        //如果提供的起始位置或结束位置为负数,则他们会被加上数组的长度来算出最终的位置,例如 起始位置为-1 就相当于array.length-1
        var arr5 = [0, 1, 2, 3, 4, 5]
        console.log(arr5.fill(1, -3));//[0,1,2,1,1,1]
        var arr6 = [0, 1, 2, 3, 4, 5]
        console.log(arr6.fill(1, 3, -2));//[0,1,2,1,4,5]
    到此这篇关于js fill函数填充数组或对象的问题的文章就介绍到这了,更多相关js fill函数填充内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-29 18:34:32 | 显示全部楼层
    ffycxyw2274436 2023-6-29 18:34:32 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-7-3 07:23:48 | 显示全部楼层
    掌舵的鱼1987 2023-7-3 07:23:48 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-3 10:28:55 | 显示全部楼层
    音乐之家1 2023-7-3 10:28:55 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-7-3 17:22:07 | 显示全部楼层
    六翼天使494 2023-7-3 17:22:07 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-3 23:49:44 | 显示全部楼层
    123456823 2023-7-3 23:49:44 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-7-4 01:31:29 | 显示全部楼层
    惜颜705 2023-7-4 01:31:29 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-7-4 20:08:40 | 显示全部楼层
    井底燕雀傥 2023-7-4 20:08:40 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-4 20:26:29 | 显示全部楼层
    贺老师 2023-7-4 20:26:29 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    发表于 2023-7-5 21:50:44 | 显示全部楼层
    执着等待等wc 2023-7-5 21:50:44 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表