如果数组函数中永远不会出现值,如何返回特定值?

时间:2018-04-22 03:23:36

标签: javascript arrays function

当数组中永远不会出现值时,尝试将此代码输出为-1。

function IndexOf (array,value) {
  var index = [];
  for (var i = 0; i < array.length; i++)
    if (array[i] === value) {
      index.push(i);
      return index.pop();
} else if (value === undefined) {
      return -1;
}
}

编辑:对于这种特殊情况,不允许使用.indexOf。

编辑2:对不起,我不是很清楚。我需要返回最后一个匹配的元素,而不是第一个。

7 个答案:

答案 0 :(得分:0)

你可以使用Array对象的indexOf函数。

function checkArray(yourArray, value) {
  if (yourArray.indexOf(value) > -1) {
     // it means the value exists, so it has an index which is greater than -1.
     // action
  } else {
     return -1;
  }
}

答案 1 :(得分:0)

找到元素table的技巧是last occurrencestartendarray.length-1 iteratestart使用i--

有关详细信息,请参阅returnfor loop

&#13;
&#13;
// Index Of.
function indexOf(array, value) {
  for (var i = array.length-1; i >= 0; i --) {
    if (array[i] == value) return i
  }
  return -1
}

// Proof.
console.log(indexOf([ 0, 1, 3, 1, 2 ], 1))
console.log(indexOf([ 0, 1, 3, 1, 2 ], 2))
console.log(indexOf([ 0, 1, 3, 1, 2 ], 4))
console.log(indexOf([ 3, 3, 3 ], 3))
console.log(indexOf([], 5))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你有

function IndexOf(array, value) {
  // ...
    } else if (value === undefined) {
      return -1;

因此,当提供第二个参数时,永远不会返回-1。推送数组然后立即pop ping它并return它也没有多大意义 - 只需返回i本身。

等待所有迭代完成,然后返回-1。

function IndexOf(array, value) {
  for (var i = 0; i < array.length; i++) {
    if (array[i] === value) return i;
  }
  return -1;
}
console.log(IndexOf([0, 1, 3, 1, 2], 1));
console.log(IndexOf([0, 1, 3, 1, 2], 2));
console.log(IndexOf([0, 1, 3, 1, 2], 3));
console.log(IndexOf([3, 3, 3], 3));
console.log(IndexOf([], 5));

答案 3 :(得分:0)

以下代码适用于您的目的,如果在数组中找不到该值,则返回-1是唯一的其他返回选项。

function IndexOf (array,value) {
  var index = [];
  for (var i = 0; i < array.length; i++)
    if (array[i] === value) {
      index.push(i);
      return index.pop();
    }
  return -1
}

在你的代码中,value永远不会等于undefined,而是value不在数组中,并且由于缺少处理该条件的return语句而返回undefined。

答案 4 :(得分:0)

试试这个。我希望这会有用

function IndexOf(array, value) {
        var index = [];
        for (var i = 0; i < array.length; i++) {

            if (array[i] === value) {
                index.push(i);
            }
        }
        if(index.length > 0){
            return index.length;
        } else{
            return -1;
        }
    }
    console.log(IndexOf([0, 1, 3, 1, 2], 1));
    console.log(IndexOf([0, 1, 3, 1, 2], 2));
    console.log(IndexOf([0, 1, 3, 1, 2], 3));
    console.log(IndexOf([3, 3, 3], 3));
    console.log(IndexOf([], 5));

答案 5 :(得分:0)

希望这段代码很有用

&#13;
&#13;
function IndexOf(array, value) {
  // creating an empty array 
  var index = []; 
  for (var i = 0; i < array.length; i++)
    // if value matches return the index of the first matched element
    if (array[i] === value) {
      return i;
    } 
      return -1
    
}
console.log(IndexOf([0, 1, 3, 1, 2], 1));
console.log(IndexOf([0, 1, 3, 1, 2], 2));
console.log(IndexOf([0, 1, 3, 1, 2], 3));
console.log(IndexOf([3, 3, 3], 3));
console.log(IndexOf([], 5));
&#13;
&#13;
&#13;

答案 6 :(得分:0)

    function IndexOf(array, value) {
      var match = -1;

      for (var i = 0; i < array.length; i++)
        if (array[i] === value)
          match = i;

      return match;
    }

console.log(IndexOf([3, 3, 3], 3)); // will return 2 as the last match index is 2
console.log(IndexOf([1,2,4], 5)); // will return -1 as there is no match

我想这就是你要找的东西。