Javascript 两个整数之间的相同数字集合
我试图检查两个整数是否包含相同的数字集合Javascript 两个整数之间的相同数字集合,javascript,regex,numbers,Javascript,Regex,Numbers,我试图检查两个整数是否包含相同的数字集合 equivalent(123, 321) // -> true equivalent(413, 1453) // -> false equivalent(2002, 2200) // -> true equivalent(542, 545) // -> false 我从以下内容开始了该功能: function equivalent(a,b) { let stringA = a.toString().match(/[1-9
equivalent(123, 321) // -> true
equivalent(413, 1453) // -> false
equivalent(2002, 2200) // -> true
equivalent(542, 545) // -> false
我从以下内容开始了该功能:
function equivalent(a,b) {
let stringA = a.toString().match(/[1-9]/g);
let stringB = b.toString().match(/[1-9]/g);
}
我不知道是否要使用哈希映射来映射每个数字和增量,但是我无法检查两个对象是否相等
哪种方法是最佳的(就空间/时间复杂性而言),哪种方法最容易阅读,或者两者兼而有之?谢谢
编辑:很抱歉没有详细说明我的问题。我想检查两个整数是否包含相同的数字和相同数量的数字。使用一个简单的循环,从第二个字符串中删除每个字符,然后检查第二个字符串是否为空(空表示两个字符串包含相同数量的数字)
console.log(
等效值(123321),//->true
等效值(4131453),//->false
等效值(2002年,2200年)/->真实值
);
等效函数(a,b){
//转换成字符串
a=a.toString();
b=b.toString();
//迭代每个字符
对于(变量i=0;i }
转换为字符串、拆分、排序、合并并比较
功能等效物(a、b){
返回a.toString().split(“”).sort().join(“”===b.toString().split(“”.sort().join(“”);
}
控制台日志(相当于(123321));
控制台日志(相当于4131453);
console.log(相当于(2002200))代码>您可以对图形进行排序并比较连接的字符串
功能等效物(a、b){
返回[..a.toString()].sort().join(“”)==[..b.toString()].sort().join(“”);
}
控制台日志(相当于(123321));
控制台日志(相当于4131453);
console.log(相当于(2002200))
会不会.toString().length
更容易些?如果我理解正确,除了长度相同之外,它们中的数字也应该是相同的,对吗?如果总是正整数(即,只有数字,没有逗号、小数点或负号),@j08691的建议是正确的。Ooooh。我明白你的意思,@KapilKashyap。所以“123”和“124”应该是false
,因为数字不一样。哇!令人困惑的问题。@PranavCBalan,你为什么这么认为?这个问题包含let
,所以这是一个ES6问题。…
扩展运算符在你的方法中占了什么作用?谢谢。@kdizzle,它将字符串扩展为单个字符数组。