2 回答
TA贡献1829条经验 获得超4个赞
您可以先找到每个字符的计数,然后使用every()方法检查是否所有字符都存在。
function findAll(str, key) {
let count = str.split('').reduce((count, c) => {
count[c] = count[c] + 1 || 1;
return count;
}, {});
return key.split('').every(c => {
if (count[c]) {
count[c]--;
return true;
}
});
}
console.log(findAll("abcdef", "abc"));
console.log(findAll("abcdef", "abca"));
console.log(findAll("abcdef", "xyz"));
TA贡献2011条经验 获得超2个赞
正则表达式匹配和对象的小技巧Set:
var chars = 'abcdef'
function match_all(str, char_str){
var pat = RegExp('['+ char_str +']', 'g'),
matched_chars = [...new Set(str.match(pat))];
matched_chars.sort()
console.log(matched_chars.join('') == char_str)
}
match_all('aca', chars)
match_all('acbacadaef1a2a3', chars)
match_all('ccbacad1e2d', chars)
添加回答
举报