亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從結果中自動創建變量名?

從結果中自動創建變量名?

郎朗坤 2023-03-10 15:47:03
我試圖弄清楚如何從無數 if/else 語句中優化我的代碼。我當前的代碼是:jQuery.each(val, function (i, data) {            //Secret Rare    if(data.card_variations[0].card_rarity == 'Secret Rare'){                secretcount++;                   jQuery('.secret-cards').append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');        }           //Ultra Rare    if(data.card_variations[0].card_rarity == 'Ultra Rare'){                ultracount++;                   jQuery('.ultra-cards').append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');        }                    //Super Rare    if(data.card_variations[0].card_rarity == 'Super Rare'){                supercount++;                    jQuery('.super-cards').append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');        }        //Rare    if(data.card_variations[0].card_rarity == 'Rare'){                rarecount++;                 jQuery('.rare-cards').append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');        }           //ShortPrint    if(data.card_variations[0].card_rarity == 'Short Print'){                shortprintcount++;                  jQuery('.shortprint-cards').append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');        }                  如您所見,這是一堆 if/else 語句,用于檢查特定稀有度并根據當前稀有度附加到 div。有超過 25 種不同的稀有度,所以我想我不能繼續這樣下去,我還需要通過代碼手動適應每一種稀有度。我還對每個進行計數以輸出它們的數量。是否有為計數器分配變量并根據結果動態創建 div 類名的最佳方法?編輯:也許最佳方法是創建一個包含所有稀有性的數組。由于這仍然需要手動更新,也許我可以通過 PHP 查詢數據庫以獲取所有稀有度,然后填充此數組...
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

由于在瀏覽器中var x = 1等于var window.x = 1,您可以使用全局對象創建動態變量名。


var rarityName = data.card_variations[0].card_rarity;

window[rarityName] = window[rarityName] ? window[rarityName] + 1 : 1;

但最好只創建一個作用域對象,它會為你存儲計數。


var counts = {}; // declare once in global scope somewhere first

//

var rarityName = data.card_variations[0].card_rarity;

counts[rarityName] = counts[rarityName] ? counts[rarityName] + 1 : 1;

所以它會是這樣的:


var counts = {};

jQuery.each(val, function (i, data) {    

    var rarityName = data.card_variations[0].card_rarity;

    counts[rarityName] = counts[rarityName] ? counts[rarityName] + 1 : 1;

    var friendlyClassName = "." + rarityName.toLowerCase().split(" ").join("-");

    jQuery(friendlyClassName).append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>');  

}); 


查看完整回答
反對 回復 2023-03-10
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

您可以使用字典來跟蹤計數并使用稀有度作為鍵。如果你改變你的類來匹配稀有性,你也可以減少很多代碼重復。


counts = {

  "Secret Rare": 0,

  "Ultra Rare": 0,

  "Super Rare": 0,

  "Rare": 0,

  "Short Print": 0,

  "Common": 0  

}

jQuery.each(val, function (i, data) {  

  let rarity = data.card_variations[0].card_rarity;

  let className = rarity.toLowerCase().replace(" ", "-");

  counts[rarity] += 1;

  jQuery(className).append('<figure><img src="'+data.card_img+'" title="'+data.card_name+'" alt="'+data.card_name+'"><figcaption>'+data.card_variations[0].card_code+'<figcaption></figure>'); 

});


查看完整回答
反對 回復 2023-03-10
?
達令說

TA貢獻1821條經驗 獲得超6個贊

你能建立一個地圖對象嗎?鍵是 card_rarity 名稱,值是 {element, count}。map.has(key) 將檢查它是否已經存在 - 如果存在,獲取 {element, count} 值,提取元素名稱,更新計數值,然后使用 map.set(key, {element, count} ) 更新地圖。如果密鑰不存在,請創建一個新密鑰。

您仍然需要手動創建要將數據附加到的元素 - 盡管如果它是新密鑰,您也許也可以自動創建這些元素?


查看完整回答
反對 回復 2023-03-10
  • 3 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號