簡體   English   中英

需要幫助在 Javascript 中創建 for 循環數組

[英]Need help creating a for loop array in Javascript

我是 Javascript 和 Node.js 的新手,我目前正在嘗試編寫一個 for 循環,但我非常卡住。

const url1 = options.url ? `https://www.icanhazdadjoke.com?url=https://${escape(options.url)}&key=${escape(options.key)}` : "";
const url2 = options.url ? `https://www.icanhazdadjoke.com?url=https://${escape(options.url2)}&key=${escape(options.key)}` : "";
const url3 = options.url ? `https://www.icanhazdadjoke.com?url=https://${escape(options.url3)}&key=${escape(options.key)}` : "";
const url4 = options.url ? `https://www.icanhazdadjoke.com?url=https://${escape(options.url4)}&key=${escape(options.key)}` : "";

const arr = [url1, url2, url3, url4]

上面的代碼是我目前正在運行並且工作正常的代碼,但我試圖將它變成一個循環,如下所示。

const urlArray = [];
for (i = 1, i < 4; i++;) {
    const url(i) = options.url ? `https://www.icanhazdadjoke.com?url=https://${escape(options.url(i))}&key=${escape(options.key)}` : "";
}

const arr = [url1, url2, url3, url4]

請注意,我希望第一個 const (url1) 具有 options.url 而不是 options.url1,因為它進一步破壞了代碼並返回錯誤。 如果您有任何提示或解決方案,請告訴我

此外,我將在此處保留選項,以防找出循環至關重要。 它使用 yargs 構建選項,並使用 axios 與 API 交互。 重要的是要注意選項是空白的,因為我正在構建一個 CLI,它從用戶那里獲取多個輸入,然后將這些輸入插入到 url 的不同迭代中並一起運行。

const options = yargs
    .usage("Usage: -u <url>")
    .option("u", { alias: "url", describe: type: "string", demandOption: true })
    .option("s", { alias: "url2", describe: type: "string", demandOption: true })
    .option("d", { alias: "url3", type: "string", demandOption: true })
    .option("f", { alias: "url4", type: "string", demandOption: true })
    .option("k", { alias: "key", type: "string", demandOption: true })
    .argv;

我只是根據您發布的代碼完全猜測options是什么樣的,但是這樣的事情有用嗎?

 const options = { url: 'x.com', url2: 'y.com', url3: 'z.com', url4: 'aa.com', key: 'key' } function getUrl(num) { if (num === 1) return options.url; const key = `url${num}`; return options[key]; } const urlArray = []; for (let i = 1; i <= 4; i++) { const newUrl = options.url? `https://www.icanhazdadjoke.com?url=https://${escape(getUrl(i))}&key=${escape(options.key)}`: ""; urlArray.push(newUrl); } console.log(urlArray);

使用 function 將迭代變量轉換為 object 中的正確鍵是一個不錯的選擇。

我使用@Chris G 的評論來回答這個問題。

嘗試用循環替換那些硬編碼的四行意味着您特別不使用像 url1 這樣的變量。 你要做的是

const arr = [1, 2, 3, 4].filter(key => !!options["url" + key]).map(key => `https://www.icanhazdadjoke.com?url=https://${escape(options["url" + key])}&key=${escape(options.key)}`);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM