美文网首页javascript
JavaScript稀疏数组和稠密数组

JavaScript稀疏数组和稠密数组

作者: nico1988 | 来源:发表于2019-12-16 23:13 被阅读0次

JavaScript: sparse arrays vs. dense arrays


image.png

1、Sparse arrays 稀疏数组
稀疏数组,简单来说,就是数组元素的个数,跟数组长度不一致


image.png

当我们循环这个数组时, 就像黑洞


image.png

关于<权威指南>p147的错误

var a1 = [,,,];//数组是[undefined,undefined,undefined]  == > 这里是 错误的,应该是都是empty
var a2 = new Array(3);
0 in a1  //true:a1在索引0处有一个元素。  ==> 这里应该是false
0 in a2  //false
image.png

2、Dense arrays 稠密数组
我们可以使用这个小技巧来创建稠密数组

image.png
这个和我们这样是等价的
Array(undefined, undefined, undefined)
大都数情况下,稀疏数组和稠密数组没啥区别,除了在循环上
image.png

3、快速创建若干个稠密数组

Array.apply(null, Array(3)).map(Function.prototype.call.bind(Number))
Array.apply(null, Array(99)).map(function(x,i){ return Number.call(x,i)})

4、实际中的快速创建稠密数组,使用 underscore

_.range(3) // [ 0, 1, 2 ]
_.range(3).map(function () { return "a" }) // [ 'a', 'a', 'a' ]

underscorerange方法实现

_.range = function(start, stop, step) {
    if (stop == null) {
      stop = start || 0;
      start = 0;
    }
    if (!step) {
      step = stop < start ? -1 : 1;
    }

    var length = Math.max(Math.ceil((stop - start) / step), 0);
    var range = Array(length);

    for (var idx = 0; idx < length; idx++, start += step) {
      range[idx] = start;
    }

    return range;
  };

参考

  1. JavaScript: sparse arrays vs. dense arrays
  2. JavaScript权威指南,

相关文章

  • JavaScript稀疏数组和稠密数组

    JavaScript: sparse arrays vs. dense arrays 1、Sparse array...

  • js的稀疏数组和密集数组

    一般来说,JavaScript中的数组是稀疏的。什么是稀疏呢?稀疏也就是说,数组中的元素之间可以有空隙,因为一个数...

  • javascript稀疏数组(sparse array)

    1.什么是稀疏数组 在java,c++中数组是一段连续的存储空间,元素与元素之间没有空隙,但在js中允许存在有空隙...

  • JavaScript 中的稀疏数组

    前言 最近有空在看一本关于 JS 数据结构和算法的书,里面有提到数组,却对数组的基本概念轻轻带过,虽然用了 JS ...

  • JavaScript 稀疏数组与孔(hole)

    在绝大多数JavaScript的实现中,数组是稀疏的,我们可以认为js的数组都是稀疏的(虽然ES标准并没有这样规定...

  • 二维数组与稀疏数组互相转换

    1.二维数组转换为稀疏数组 2.稀疏数组转换二维数组

  • 稀疏数组

    1.稀疏数组 1.1创建一个指定长度的稀疏数组 new创建var a = new Array();>>(3)[em...

  • 稀疏数组

    当数组中的大部分元素为0,或者同一值时,可以使用稀疏数组来存储该数组,使用稀疏矩阵可以节约存储空间稀疏数组的处理方...

  • 稀疏数组

    1、稀疏算法的基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。从而减少计...

  • 稀疏数组

    二维数组转成稀疏数,案例(五子棋),思路:1.获取二维数组中有效数据的个数.2.稀疏数组的列数为3,行数通过有效数...

网友评论

    本文标题:JavaScript稀疏数组和稠密数组

    本文链接:https://www.haomeiwen.com/subject/pmkjnctx.html