在值之前和之后用零动态填充Javascript数组的算法

时间:2019-06-04 14:40:23

标签: javascript python arrays django

我使用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个零的新数组,然后将另一个数组的值推入其中,但这没有用。

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

3 个答案:

答案 0 :(得分:5)

您可以采用一个新数组,并用索引中的项目(如果找到)或零填充它。

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]));

答案 1 :(得分: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]

和for

中的简单if / else

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

将返回

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

答案 2 :(得分:3)

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

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

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