const strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
let map = new Map();
for (let str of strs) {
let key = sortAlphabets(str);
map[key] = [...map[key] || "", str];
}
console.log(
Object.values(map)
)
如果我添加任何字串讓我們說“te”,地圖看起來像這樣
map[key]=[...map[key] || "te" , str];
Map(0) {
aet: [ 't', 'e', 'eat', 'tea', 'ate' ],
ant: [ 't', 'e', 'tan', 'nat' ],
abt: [ 't', 'e', 'bat' ]
}
當它為空時 map[key]=[...map[key] || "" , str];
Map(0) {
aet: [ 'eat', 'tea', 'ate' ],
ant: [ 'tan', 'nat' ],
abt: [ 'bat' ]}
那么為什么沒有在地圖中添加空字串呢?
uj5u.com熱心網友回復:
我真的不明白你想做什么,但我認為這可以解決你的問題。這段代碼試圖迭代你傳遞的字串值,如果你想把它當作文字空值,你必須把它像值一樣放在陣列中。這使得當它被迭代時,回傳的值將是里面的任何字串。要獲得空值,請嘗試僅將 ''(empty value) 包裝在陣列 [''] 中,如下所示:
strs = ["eat","tea","tan","ate","nat","bat"]
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
let map = new Map();
for (let str of strs) {
let key = sortAlphabets(str);
map[key] = [...map[key] || [''], str];
}
console.log( map )
uj5u.com熱心網友回復:
我沒有完全理解這個問題,但是像這樣使用地圖物件是不正確的。地圖物件必須使用獲取和設定。
像那樣:
const strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
let map = new Map();
for (let str of strs) {
let key = sortAlphabets(str);
map.set(key, "te");
}
uj5u.com熱心網友回復:
你有問題:
map[key] = [...map[key] || [''], str];
你攤開桌子或者只是用空字串把表推開。所以在 map[key] 中的第一次互動之后,你有陣列 [['']]。
使固定:
const strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
let map = new Map();
for (let str of strs) {
let key = sortAlphabets(str);
map[key] = [...(map[key] || []), str];
}
console.log(
Object.values(map)
)
如果您需要為每個鍵添加空字串:
map[key] = [...(map[key] || ['']), str];
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/522829.html
上一篇:使用條件映射值,Pandas
下一篇:合并具有相同鍵的值
