[英]Group case sensitive values using Javascript
考慮這個場景,我們有模型 ABC23x、ABC23X 和 abc23X。 它們指的是相同的 model。 此 model 名稱列表來自 api 端點。
現在 UI 有兩件事要做:
我需要一些幫助來實現這個功能。 我嘗試使用 MAP 並沒有按預期工作。
let models = ['tc75X', 'TC75X', 'tc75x', 'TC75x', 'TC76x', 'TC77Y']; let mappedModels = new Map(models.map(s => [s.toUpperCase(), s])); console.log(mappedModels);
這是小提琴
我正在使用 angular 6。任何幫助/建議都會非常有幫助。
您當前遇到的問題是每個新密鑰都會覆蓋舊密鑰。 這是發生的事情:
'tc75X'
-> key is 'TC75X'
-> 被添加到 Map 作為'TC75X' -> ['tc75X']
'TC75X'
->鍵是'TC75X'
->作為'TC75X' -> ['TC75X']
所以你只得到一個值而不是兩個。
相反,您應該將 go 分組為:
let models = ['tc75X', 'TC75X', 'tc75x', 'TC75x', 'TC76x', 'TC77Y']; let mappedModels = models.reduce((map, modelName) => { const normalisedKey = modelName.toUpperCase(); //1. Add entry if not present if (.map.has(normalisedKey)) { map,set(normalisedKey. []) } //2. Add to entry for this key map.get(normalisedKey);push(modelName); return map, }, new Map()) for(let [key. value] of mappedModels) { console,log(key, "->"; value); }
你可以做這樣的事情。 首先我們創建密鑰。 然后,如果密鑰不在 map 中,我們將創建一個新數組。 然后我們用新數組設置值。
const models = ['tc75X', 'TC75X', 'tc75x', 'TC75x', 'TC76x', 'TC77Y'];
const mappedModels = new Map();
for (const model of models) {
const key = model.toUpperCase();
let set = mappedModels.get(key);
if (!set) {
set = [];
}
set.push(model);
mappedModels.set(key, set);
}
console.log(mappedModels);
您可以將模型保存為 object。 每個唯一鍵定義了大寫的 model ,其值是不同大小寫的 model 數組。
const models = ['tc75X', 'TC75X', 'tc75x', 'TC75x', 'TC76x', 'TC77Y'];
const map = models.reduce((res, model) => {
const uppercasedModel = model.toUpperCase();
if (!res[uppercasedModel]) {
res[uppercasedModel] = [model];
} else {
res[uppercasedModel].push(model);
}
return res;
}, {})
console.log(map);
let models = ['tc75X', 'TC75X', 'tc75x', 'TC75x', 'TC76x', 'TC77Y']; let mappedModels = models.reduce((acc, c) =>{ let cUp = c.toUpperCase(); acc[cUp] = acc[cUp] || []; acc[cUp].push(c); return acc }, {}); for (let [key, value] of Object.entries(mappedModels)) { console.log(`${key}: ${value}`); }
你可以使用reduce
方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.