我正在开发一个pdf,它是用jspdf生成的。为此,我首先创建了一个数组,它反映了我界面中的输入:
let itemNew = [
{ index:'Kosten für Stories:',id: `${storiesNumber.value} Stories für ${storiesCosts.value} € monatlich` },
{ index:'Kosten für Posts:',id: `${postsNumber.value} Posts für ${postsCosts.value} € monatlich` },
{ index:'Kosten für Reels:',id: `${reelsNumber.value} Reels für ${reelsCosts.value} € monatlich` },
{ index:'Kosten für Bio:',id: `${bioCosts.value} € einmalig `},
{ index:'Redaktionsplan:',id: `${redaktionsplanCosts.value} € einmalig `},
{ index:'Monatliche Auswertung:',id: `${auswertungCosts.value} € einmalig `},
]
由于默认情况下不需要这些输入,因此当用户点击";生成Pdf";按钮不应将空输入呈现为pdf。为此,我需要以某种方式过滤掉这些代码,并将上面的代码与下面的代码链接起来
itemNew.forEach(element => {
arr = [Number(storiesNumber.value), Number(postsNumber.value), Number(reelsNumber.value), Number(bioCosts.value), Number(redaktionsplanCosts.value), Number(auswertungCosts.value)]
arr.filter(Boolean)
var temp = [element.index,element.id];
rows.push(temp);
});
我知道,就目前而言,这是两个代码位,并没有真正相互连接。我试图实现的是,当Number(storiesNumber.value) == false, { index:'Kosten für Stories:',id:
${storiesNumber.value}Stories für${storiesCosts.value}€monatlich}
不会被推入行。
您可以使用filter和map after来获得您想要的结果。
const storiesNumber = { value: "" };
const storiesCosts = { value: "" };
const postsNumber = { value: "" };
const postsCosts = { value: "" };
const reelsNumber = { value: "" };
const reelsCosts = { value: "" };
const bioCosts = { value: "" };
const redaktionsplanCosts = { value: "" };
const auswertungCosts = { value: "" };
let itemNew = [
{
index: "Kosten für Stories:",
id: `${storiesNumber.value} Stories für ${storiesCosts.value} € monatlich`,
},
{
index: "Kosten für Posts:",
id: `${postsNumber.value} Posts für ${postsCosts.value} € monatlich`,
},
{
index: "Kosten für Reels:",
id: `${reelsNumber.value} Reels für ${reelsCosts.value} € monatlich`,
},
{ index: "Kosten für Bio:", id: `${bioCosts.value} € einmalig ` },
{ index: "Redaktionsplan:", id: `${redaktionsplanCosts.value} € einmalig ` },
{
index: "Monatliche Auswertung:",
id: `${auswertungCosts.value} € einmalig `,
},
];
arr = [
Number(storiesNumber.value),
Number(postsNumber.value),
Number(reelsNumber.value),
Number(bioCosts.value),
Number(redaktionsplanCosts.value),
Number(auswertungCosts.value),
];
const row= itemNew.filter((_, i) => arr[i] !== 0).map(x => [x.index, x.id]);
console.log(row);
.filter((不修改原始数组。它返回已过滤的数组。
由于您已经按照正确的顺序构建了arr
数组,因此可以使用它。在filter函数中使用index
来过滤您的itemNew
数组。
let arr = [Number(storiesNumber.value), Number(postsNumber.value), Number(reelsNumber.value), Number(bioCosts.value), Number(redaktionsplanCosts.value), Number(auswertungCosts.value)]
let ans = itemNew.filter((x,index)=>{
return arr[index] == 0;
}).forEach(y => { rows.push([y.index,y.id]) });