当数组中永远不会出现值时,尝试将此代码输出为-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:对不起,我不是很清楚。我需要返回最后一个匹配的元素,而不是第一个。
答案 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 occurrence
(start
)end
和array.length-1
iterate
回start
使用i--
。
// 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;
答案 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)
希望这段代码很有用
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;
答案 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
我想这就是你要找的东西。