【问题标题】:Best way to fill the value of missing index with null in Javascript [closed]在Javascript中用null填充缺失索引值的最佳方法[关闭]
【发布时间】:2020-03-01 06:41:19
【问题描述】:

我有一个数组缺少某些索引的值,您能否建议用 null 或 0 填充它们的最佳方法,我在 lodash 中尝试了可能的方法,但似乎没有任何工作。

按照下面的问题,没有任何帮助

Filling the missing index and filling its value with 0

fill multiple missing values with series based on index values

Python - filling a list of tuples with zeros in places of missing indexes

我的数组的console.log 输出低于输出

[ 5289, <1 empty item>, 20460, 10860, '189', 'D2989', <1 empty item>, <2 empty items>, '-' ]

我想填写的地方

[ 5289, null, 20460, 10860, '189', 'D2989', null, null,null, '-' ]

【问题讨论】:

  • “某些索引的缺失值”,这是否意味着它们是“未定义”/“空”?还是它们是“空的”插槽?
  • 为什么要查找 Python 解决方案?稀疏数组将在未初始化的索引处未定义。实际问题是什么?没有任何代码或上下文,很难知道你真正想要什么。
  • Javascript 中不能有“缺失”的数组索引。索引总是从 0 开始,最大有效索引将由数组的长度决定。您想在数组末尾添加更多元素,即填充其长度吗?
  • 请分享您的数组变量的最小示例。

标签: javascript arrays lodash


【解决方案1】:

扩展运算符可以将空转换为未定义:

const list = new Array(5);
list[3] = "text";

console.log([...list]);

【讨论】:

  • 首先,map 不会修改初始数组,它会返回一个新数组,除此之外这不起作用,因为map 仅迭代具有索引的条目。 undefined 数组中的条目具有索引 - 它们与实际的空条目不同。
  • @Coldark 我看错了。更新了我的答案。
  • 这真的很聪明,我肯定赞成这个。
【解决方案2】:

既然你已经解决了你的问题:

@Coldark,@DaveNewton,@Nick Parsons 谢谢你的时间,我解决了它

test.forEach(function(o, index) {
  var len = test.length;
  for (var i = 0; i < len; i++) {
    if (test[i] === undefined) {
      test[i] = null;
    }
  }
}); 

如果有人来这里寻找类似问题的解决方案,我想说的是,您甚至可以这样做:

for (let i = 0; i < arr.length; i++) {
  if (!arr[i]) { // or arr[i] === undefined if your array may have other falsy values in it
    arr[i] = null;
  }
}

空条目是由删除数组值引起的,即:

for (let i = 0; i < arr.length; i++) {
    delete arr[i];
}

通常不应使用,除非是故意的并且我们完全了解后果。空或不存在的条目与任何“空”值(如 nullundefined)之间的主要区别在于后者仍然可以通过索引访问。

很好解释here

【讨论】:

    【解决方案3】:

    我认为最简单的方法是使用Array.from

    const arr = new Array(4);
    arr[0] = 5219;
    
    console.log(arr)
    
    const arr_fill = Array.from(arr, x => x || null);
    
    console.log(arr_fill);

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 2021-11-25
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 2018-04-06
      • 2019-09-26
      相关资源
      最近更新 更多