基于条件筛选打印成对的键和值



我正在开发一个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]) });

最新更新