【问题标题】:Javascript: How to insert a hole into a sparse array or creating a holeJavascript:如何在稀疏数组中插入孔或创建孔
【发布时间】:2021-10-17 18:17:12
【问题描述】:

我正在使用稀疏数组来提高数据集的内存效率。 (并表示孔与undefinednull 条目之间的差异)通过设置datapoints.lentgh 在末尾添加孔即可。

datapoints = [10,,,20,,,10,1]

不,我面临如何插入孔的问题(比如在 20 岁之前)

datapoint.splice(3,0)

不起作用,我找不到(简单的)插入孔的方法。 (认为​​我必须重建数组但之前想问过) 或者有没有办法将“定义”的条目更改为一个洞? delete datapoint[4]; 创建一个未定义的条目而不是一个洞:(

【问题讨论】:

  • 好吧,我想我找到了解决办法:

标签: javascript arrays sparse-matrix


【解决方案1】:

你的稀疏数组实际上是一个对象。您可以删除项目,也可以添加项目。

假设您想在位置offset 之前添加k 孔。那么:

datapoints = [10,,,20,,,10,1];
function addHoles(offset, k, datapoints) {
    let migration = {};
    for (let key in datapoints) {
        let intKey = parseInt(key);
        if (intKey >= offset) {
            migration[intKey] = datapoints[intKey];
            delete datapoints[intKey];
        }
    }
    for (let key in migration) {
        let intKey = parseInt(key);
        datapoints[intKey + k] = migration[intKey];
    }
    return datapoints;
}
console.log(addHoles(3, 3, datapoints));

【讨论】:

    【解决方案2】:

    认为我可以合作

    datapoint.splice(3,0,undefined);
    delete datapoint[3]
    

    看来我现在有个坑……

    【讨论】:

      猜你喜欢
      • 2019-02-10
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      相关资源
      最近更新 更多