我使用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个零的新数组,然后将另一个数组的值推入其中,但这没有用。
有人可以指出我正确的方向还是有想法?非常感谢。
答案 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]));