JavaScript某些方法不起作用

时间:2018-08-16 22:45:06

标签: javascript arrays function search

我有一个函数,应该找到索引与其值相等的数组的第一个元素。我需要得到index = 1,但我得到-1

function indexEqualsValue(a) {
  var currentElement = -1;
  a.some(function(element, index) {
    if (element === index) {
      return element
    }
  })
  return currentElement
}
console.log(indexEqualsValue([-5, 1, 2, 3, 4, 5, 7, 10, 15]))

1 个答案:

答案 0 :(得分:2)

您永远不会将currentElement分配给找到的元素,因此它始终保留为-1。使用findfindIndex可能更合适,它们返回找到的元素(或找到的索引)-some返回一个 boolean ,但是您不使用您的.some通话结果。尝试以下方法:

function indexEqualsValue(a) {
  return a.findIndex((element, index) => element === index)
}
console.log(indexEqualsValue([-5, 1, 2, 3, 4, 5, 7, 10, 15]))
console.log(indexEqualsValue([-5, 0, 2, 3, 4, 5, 7, 10, 15]))
console.log(indexEqualsValue([-5, 2, 3, 4, 5, 7, 10, 15]))