Javascript 从数组中过滤出奇数,然后返回索引位置

Javascript 从数组中过滤出奇数,然后返回索引位置,javascript,arrays,function,filter,Javascript,Arrays,Function,Filter,我有一个相同单词的数组,但是数组中的一个单词拼写向后。函数返回“错误”字的索引位置。下面的代码工作得非常好,但相当长 我想知道是否有一种方法可以缩短代码并且仍然让它返回相同的值 function oddOneOut(arr) { let word = '' if (arr[0] === arr[1]) { word = arr[0] } if (arr[1] === arr[2]) { word = arr[1] } if (arr[2] === ar

我有一个相同单词的数组,但是数组中的一个单词拼写向后。函数返回“错误”字的索引位置。下面的代码工作得非常好,但相当长

我想知道是否有一种方法可以缩短代码并且仍然让它返回相同的值

function oddOneOut(arr) {

  let word = ''

  if (arr[0] === arr[1]) {
    word = arr[0]
  }
  if (arr[1] === arr[2]) {
    word = arr[1]
  }
  if (arr[2] === arr[3]) {
    word = arr[2]
  }
  function wrong(element) {
    return element !== word
  }
  return arr.findIndex(wrong)
}

console.log(oddOneOut(["sword", "sword", "sword", "sword", "drows", "sword"]))

//returns 4

我想你可以用三元运算符来表示你的ifs和一个内置的数组函数来查找你的奇数字

以下是一个例子:

function oddOneOut(arr) {
  let word = arr[0] === arr[1] ? arr[0] : arr[1] === arr[2] ? arr[1] : arr[0];
  return arr.findIndex(r => r !== word);
}

console.log(oddOneOut(["sword", "drows", "sword", "sword", "sword", "sword"]));

我希望这对您有用。

我认为您可以使用ifs的三元运算符和内置的数组函数来查找奇数字

以下是一个例子:

function oddOneOut(arr) {
  let word = arr[0] === arr[1] ? arr[0] : arr[1] === arr[2] ? arr[1] : arr[0];
  return arr.findIndex(r => r !== word);
}

console.log(oddOneOut(["sword", "drows", "sword", "sword", "sword", "sword"]));

我希望这对您有用。

假设只有一个项目是不同的,您可以将每个项目与之前和之后的项目进行检查,如果每个项目不同,则返回该索引

for(let i = 0; i < array.length; i++){
  let previous = i - 1;
  let next = i + 1;

  if(i == array.length - 1) {
    next = 0;
  }

  if(array[i] != array[previous] && array[i] != array[next]) {
    return i;
  }
}
for(设i=0;i
假设只有一个项目是不同的,您可以将每个项目与之前和之后的项目进行对比,如果每个项目不同,则返回该索引

for(let i = 0; i < array.length; i++){
  let previous = i - 1;
  let next = i + 1;

  if(i == array.length - 1) {
    next = 0;
  }

  if(array[i] != array[previous] && array[i] != array[next]) {
    return i;
  }
}
for(设i=0;i
欢迎来到StackOverflow!乍一看,我想说您的
oddOneOut()
函数可以通过使用
for
循环来改进——目前它看起来相当难编码。欢迎使用StackOverflow!乍一看,我想说您的
oddOneOut()
函数可以通过使用
for
循环来改进——目前它看起来相当难编码。