Javascript 找到迷路号码

Javascript 找到迷路号码,javascript,Javascript,在代码战中练习了一些Kata,并遇到了“查找迷路号码”——我认为这是一个非常简单的练习(感谢上帝,我开始对这些挑战感到舒适),但我没有通过一次测试。不知道为什么我没有通过测试,网站也没有告诉我他们通过了什么阵列 下面是我使用的代码-如果有人能帮助我,那就太好了 以下是挑战与问题的链接 您将得到一个奇数长度的整数数组,其中除一个数字外,所有整数都相同 完成接受这样一个数组的方法,并返回一个不同的数字 输入数组将始终有效!(奇数长度>=3) 示例 [1,1,2]==>2 [17,17,3,17,

在代码战中练习了一些Kata,并遇到了“查找迷路号码”——我认为这是一个非常简单的练习(感谢上帝,我开始对这些挑战感到舒适),但我没有通过一次测试。不知道为什么我没有通过测试,网站也没有告诉我他们通过了什么阵列

下面是我使用的代码-如果有人能帮助我,那就太好了

以下是挑战与问题的链接


您将得到一个奇数长度的整数数组,其中除一个数字外,所有整数都相同

完成接受这样一个数组的方法,并返回一个不同的数字

输入数组将始终有效!(奇数长度>=3)

示例
[1,1,2]==>2
[17,17,3,17,17,17,17]=>3

功能(数字){
设strayChar=number[0];
for(设i=1;i
功能(数字){
//以第一个元素为例
设strayChar=number[0];
//看看它是否与下一个2不同
如果(strayChar!==数字[1]&&strayChar!==数字[2])返回strayChar;
//如果没有,请找到第一个不同的值
for(设i=1;i控制台日志(杂散(数据))
在这里,我们使用计算器
过滤器
进行
查找
来查找元素,测试非常简单。查找筛选数组长度为1的元素

让testarray=[[1,1,2],[17,17,3,17,17,17,17];
功能(数字){
返回numbers.find((e)=>numbers.filter((v)=>v==e.length==1);
} 
testArrays.forEach(arr=>{
控制台日志(杂散(arr));

});您可以通过使用Set、Map、Array#from、Array#slice和Array#find执行类似的操作

使用
Set
查找列表中的唯一编号。然后只需循环遍历列表的前3个元素。如果其中一个唯一数的计数大于1,则表示另一个唯一数必须是奇数

const data=[17,17,3,17,17,17,17];
功能(数字){
//查找唯一的数字并将其计数设置为0
常量映射=新映射(数组.from(新集合(数字)).map(v=>([v,0]));
//从数字数组中获取前三个数字
返回数组.from(
数字。切片(0,3)。减少((a,c)=>{
//更新计数
返回map.set(c,map.get(c)+1);
},地图)
//查找计数为0或1的数字

).find(([,v])=>v我知道已经过去一年多了,但你所犯的错误只是因为if语句中额外的“=”

你也可以将任务问题添加到你的帖子中吗?刚刚编辑了任务以及与codewars Challenge的链接。当数组中的第一个元素(
number[0]
时,它将失败)是杂散数,例如,
杂散([2,1,1,1])
返回
1
当它应该返回
2
时。1.比较前两个元素。2.如果它们相同,将每个后续元素与第一个元素进行比较,第一个不匹配是杂散3。如果它们不相同,比较第一个和第三个=>相等=>第二个元素杂散,不相等=>第一个是杂散
数字。reduce(函数(a,b){返回a^b;})
异或解决方案似乎依赖于源数组中有奇数个条目。添加另一个
17
会使输出结果为
18
。有人能解释一下^s是如何工作的吗?一般来说,如果答案中包含对代码的用途的解释,以及解决问题的原因,那么答案会更有帮助不引入他人,问题不在不同数据类型之间的比较,考虑这种情况<代码> [2,1,2] < /代码> OPS答案将失败。
function stray(numbers) {
let strayChar = numbers[0];

 for(let i = 1; i < numbers.length; i++){
  if(strayChar !== numbers[i]){
  return strayChar = numbers[i];
   }
 }
       return 0;
 } 
const stray = numbers => {
  let number = 0

  numbers.forEach(x => numbers.indexOf(x) ? number = x : null)
  return number
}
console.log(stray([17, 17, 3, 17, 17, 17, 17]))