【问题标题】:Algorithm to dynamically populate Javascript array with zeros before and after values在值之前和之后用零动态填充 Javascript 数组的算法
【发布时间】:2019-06-04 14:40:23
【问题描述】:

我使用 python/django 动态获取几个月的数据并将其传递给我的模板。在那里我使用 Javascript 来操作数据

这意味着在我的模板中我有一个 javascript 数组,每个数字代表一个月,如下所示:

months = [1,2,3,4]

左右:

months = [4,5,6]

左右:

months = [6,7,8]

根据上面的数组,我想用零填充缺失的位置。缺少位置意味着数组末尾的长度应为 12。每个月都应该在准确的位置。例如:

months = [1,2,3,4,0,0,0,0,0,0,0,0]

差不多

months = [0,0,0,4,5,6,0,0,0,0,0,0]

差不多

months = [0,0,0,0,0,6,7,8,0,0,0,0]

我尝试了很多东西。 Splicing 似乎是一个好方法,但没有按预期工作。我无法使用Array.fill 解决它。我还尝试创建一个包含 12 个零的新数组,然后将另一个数组的值推入其中,但它不起作用。

有人可以指出我正确的方向或有想法吗?非常感谢。

【问题讨论】:

  • 它不起作用 - 发布不起作用的代码以及错误/意外行为。

标签: javascript python arrays django


【解决方案1】:

您可以获取一个新数组并用索引上的项目(如果找到或为零)填充它。

const fill = m => Array.from({ length: 12 }, (_, i) => +m.includes(i + 1) && i + 1);

console.log(...fill([1, 2, 3, 4]));
console.log(...fill([4, 5, 6]));
console.log(...fill([6, 7, 8]));

【讨论】:

  • 非常感谢!!完美运行
【解决方案2】:

您可以映射 12 个项目的空数组,检查源数组中是否存在月份编号:

const padZeroes =  arr => [...Array(12)].map((item,index) => arr.includes(index+1) ? index+1 : 0);

console.log(padZeroes([5,6,7,8]));

【讨论】:

  • 我接受了这个答案,因为我最终使用了它,它只是一行代码。感谢所有分享他们想法的人!
【解决方案3】:

列出12个月的清单

true_months = [1,2,3,4,5,6,7,8,9,10,11,12](或true_months = list(range(1,13))

然后你的变量

months = [4,5,6]

并通过一个简单的 if/else for

[x if x in months else 0 for x in true_months]

将返回

[0, 0, 0, 4, 5, 6, 0, 0, 0, 0, 0, 0]

【讨论】:

  • 非常感谢您的回答!效果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2019-06-11
  • 2018-02-28
  • 2021-12-29
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多