3 回答

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>');
});

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>');
});

TA貢獻1821條經驗 獲得超6個贊
你能建立一個地圖對象嗎?鍵是 card_rarity 名稱,值是 {element, count}。map.has(key) 將檢查它是否已經存在 - 如果存在,獲取 {element, count} 值,提取元素名稱,更新計數值,然后使用 map.set(key, {element, count} ) 更新地圖。如果密鑰不存在,請創建一個新密鑰。
您仍然需要手動創建要將數據附加到的元素 - 盡管如果它是新密鑰,您也許也可以自動創建這些元素?
添加回答
舉報