JavaScript数组初始化的那些事儿

点击上方 Java学习之道,选择 设为星标

每天18:30点,干货准时奉上!

599dd6bca0830d9c4b2677e9b712e56d.png

Part1不用for循环实现

1fill()

fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

const array = Array(10).fill();
    
// [undefined, undefined, undefined, undefined, undefined]

语法

arr.fill(value[, start[, end]])

  • value

  • 用来填充数组元素的值。

  • start 可选

  • 起始索引,默认值为0。

  • end 可选

  • 终止索引,默认值为 this.length

实例

[1, 2, 3].fill(4);               // [4, 4, 4]
   [1, 2, 3].fill(4, 1);            // [1, 4, 4]
   [1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
   [1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
   [1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
   [1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
   [1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
   [1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
   Array(3).fill(4);                // [4, 4, 4]
   [].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}

   // Objects by reference.
   var arr = Array(3).fill({}) // [{}, {}, {}];
   // 需要注意如果fill的参数为引用类型,会导致都执行都一个引用类型
   // 如 arr[0] === arr[1] 为true
   arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]

2Array.from()

Array.from() 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。

Array.from({length: 5})
    // [undefined, undefined, undefined, undefined, undefined]
    
    Array.from(Array(5))
    // [undefined, undefined, undefined, undefined, undefined]

语法

Array.from(arrayLike[, mapFn[, thisArg]])

  • arrayLike

  • 想要转换成数组的伪数组对象或可迭代对象。

  • mapFn 可选

  • 如果指定了该参数,新数组中的每个元素会执行该回调函数。

  • thisArg 可选

  • 可选参数,执行回调函数 mapFnthis 对象。

Array.from() 可以通过以下方式来创建数组对象:

  • 伪数组对象(拥有一个 length 属性和若干索引属性的任意对象)

  • 可迭代对象(可以获取对象中的元素,如 Map和 Set 等

实例

String 生成数组
Array.from('foo');
// [ "f", "o", "o" ]
Set 生成数组
const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]
Map 生成数组
const map = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(map);
// [[1, 2], [2, 4], [4, 8]]

const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];

Array.from(mapper.keys());
// ['1', '2'];
Array.from 中使用箭头函数
Array.from([1, 2, 3], x => x + x);
// [2, 4, 6]

Array.from({length: 5}, (v, i) => i);
// [0, 1, 2, 3, 4]

3Array.keys()

keys()方法返回一个包含数组中每个索引键的Array Iterator对象。

const array = [...Array(5).keys()];
 // [0, 1, 2, 3, 4]

 const array = Array.from(Array(5).keys());
 // [0, 1, 2, 3, 4]

语法

arr.keys()

实例

索引迭代器会包含那些没有对应元素的索引
var arr = ["a", , "c"];
var sparseKeys = Object.keys(arr);
var denseKeys = [...arr.keys()];
console.log(sparseKeys); // ['0', '2']
console.log(denseKeys);  // [0, 1, 2]

4toString() + split()

toString() 返回一个字符串,表示指定的数组及其元素。

const array = Array(5).toString().split(',');
// ['', '', '', '', '']

语法

arr.toString()

-- END --

b22eef0fc2174d54a79297088691ac70.gif | 更多精彩文章 -



 
 
▽加我微信,交个朋友

8f825a873eab7634bfdf5099a2ba5361.png

长按/扫码添加↑↑↑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MobiusStrip

请我喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值