javascript - 查找离群值

标签 javascript arrays

我正试图解决 CodeWars.com 上的编码挑战,我希望能在正确的方向上得到一点插入。下面的函数应该接受一串数字(如 "2 4 7 8 10""1 2 2" 等)并输出均匀度(偶数或奇数)与其他数字不同的数字。 CodeWars.com 链接位于:https://www.codewars.com/kata/iq-test/train/javascript )

我的功能似乎在最后一个数字是不同数字(“100 100 1”“5 3 2”)的测试中失败。为什么我的功能以这种方式执行的任何想法?我一直在看它,但我不明白为什么它会这样做:

function iqTest(numbers){
  let numArr = numbers.split(' ');
  let obj = {};
  obj.evenCount = 0;
  obj.oddCount = 0;
  console.log(numArr);

  for (let i = 0; i < numArr.length; i++) {
    if (numArr[i] % 2 === 0) {
      obj.evenCount += 1;
      obj.even = i + 1;
    } else {
      obj.oddCount += 1;
      obj.odd = i + 1;
    }
  }

  if (obj.even < obj.odd) {
    return (obj.even);
  } else {
    return (obj.odd);
  }
}

console.log(iqTest('5 3 2'));

最佳答案

您需要在函数末尾检查 eventCountoddCount,而不是 oddevent 像这样的属性:

if (obj.evenCount < obj.oddCount) {

之前,您是在检查哪个索引更高(即位置),但实际上您想检查哪个计数/频率更高。

请参阅下面的工作示例:

function iqTest(numbers) {
  let numArr = numbers.split(' ');
  let obj = {};
  obj.evenCount = 0;
  obj.oddCount = 0;
  console.log(numArr);

  for (let i = 0; i < numArr.length; i++) {
    if (numArr[i] % 2 === 0) {
      obj.evenCount += 1;
      obj.even = i + 1;
    } else {
      obj.oddCount += 1;
      obj.odd = i + 1;
    }
    
    if(obj.oddCount > 0 && obj.evenCount > 0 && obj.oddCount !== obj.evenCount) { // early termination condition
      break; // break out of the loop is the difference between odd and even already exists
    }
  }

  if (obj.evenCount < obj.oddCount) { // change to check the counts
    return (obj.even);
  } else {
    return (obj.odd);
  }
}

console.log(iqTest("2 4 7 8 10")); // 3 (item: 7)
console.log(iqTest("1 2 2")); // 1 (item: 1)
console.log(iqTest("100 100 1")); // 3 (item: 1)
console.log(iqTest("5 3 2")); // 3 (item: 2)

关于javascript - 查找离群值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546095/

相关文章:

javascript - 带有 requestAnimationFrame 的 addEventListener

javascript - 覆盖 datatables.js 搜索行为

iphone - 在 iphone 应用程序上解析 JSON 对象和子元素

c++ - 试图使矩阵类工作

c++ - 我是否需要手动删除或管理这个 unique_ptr

arrays - 为什么我不能检查我的数组数组是否包含特定数组?

javascript - 基于多个 CSS 类的排序,以及使用 Jquery 设计代码

javascript - 如何使用 jquery/javascript 动态更改菜单的样式?

基于提示值的 Javascript 警报

php - 在多维数组中查找最小值并返回键