【问题标题】:what is wrong with my findOutlier function? why am i getting error?我的 findOutlier 函数有什么问题?为什么我会出错?
【发布时间】:2018-04-28 18:29:24
【问题描述】:

给你一个包含整数的数组(长度至少为 3,但可能非常大)。数组要么完全由奇数组成,要么完全由偶数组成,除了单个整数 N。编写一个方法,将数组作为参数并返回这个“离群值”N

示例:[2, 4, 0, 100, 4, 11, 2602, 36] 应该返回:11(唯一的奇数)

我的溶胶:

function findOutlier(integers){
var odd = false;
var even = false;
if ((integers[0]%2===0) && (integers[1]%2===0)) || ((integers[1]%2===0) && (integers[2]%2===0)){
    even = true;
}else{
    odd = true;
}

 if (odd){
    for (var i = 0; i < integers.length; i++){
        if (integers[i]%2 === 0){
            return integers[i];
    }}
}else if (even){
    for (var i = 0; i < integers.length; i++){
        if (integers[i]%2 !== 0){
            return integers[i];
 }}
}
}

【问题讨论】:

  • 你的integersarray在哪里。
  • “我为什么会出错”。什么错误?没有显示
  • 你的}太多了。

标签: javascript


【解决方案1】:

您的第一个if-条件需要用括号括起来: if a || b 必须是 if (a || b)。然后它工作。 :)

function findOutlier(integers) {
  var odd = false;
  var even = false;
  if (((integers[0] % 2 === 0) && (integers[1] % 2 === 0)) || ((integers[1] % 2 === 0) && (integers[2] % 2 === 0))) {
    even = true;
  } else {
    odd = true;
  }

  if (odd) {
    for (var i = 0; i < integers.length; i++) {
      if (integers[i] % 2 === 0) {
        return integers[i];
      }
    }
  } else if (even) {
    for (var i = 0; i < integers.length; i++) {
      if (integers[i] % 2 !== 0) {
        return integers[i];
      }
    }
  }
}

var result = findOutlier([2, 4, 0, 100, 4, 11, 2602, 36] );
console.log(result);

这是解决该问题的另一种方法:

function findOutlier(integers) {
  var outlier;
  var odd = [];
  var even = [];
  
  // Push odd numbers to odd array and even numbers to even array.
  integers.forEach(function(element) {
    if (element % 2 == 0) even.push(element);
    else odd.push(element);
  });

  // Ensure that the input is valid.
  if (odd.length != 1 && even.length != 1) {
    console.log("There is no single outlier! The array contains " + odd.length + " odd integers and " + even.length + " even integers.")
  } else {
    // Get outlier.
    outlier = (odd.length == 1 ? odd[0] : even[0]);
  }
  
  return outlier;
}

var result = findOutlier([2, 4, 0, 100, 4, 11, 2602, 36]);
console.log(result);

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 2015-09-30
    • 2017-10-07
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2012-10-26
    • 2015-03-17
    相关资源
    最近更新 更多