我想创建一个像这样的函数:
function arraySearch(array, valuetosearchfor)
{
// some code
}
如果它在数组中找到值,它将返回键,在那里找到值。如果有多个结果(多个键)或根本没有结果(找不到任何结果),则该函数将返回FALSE。
我找到了这段代码:
function arraySearch(arr,val)
{
for (var i=0; i<arr.length; i++)
{
if (arr[i] == val)
{
return i;
}
else
{
return false;
}
}
}
并像这样使用它:
var resultofarraycheck = arraySearch(board, chosen);
if (resultofarraycheck === false)
{
document.getElementById(buttonid).value;
chosen = 0;
}
但它似乎不起作用。 当它应该找到某些东西时,它返回false而不是键(i)。
我该如何解决这个问题,或者我做错了什么?
谢谢,如果我的英语不够清楚,我很抱歉。
答案 0 :(得分:19)
function arraySearch(arr,val) {
for (var i=0; i<arr.length; i++)
if (arr[i] === val)
return i;
return false;
}
答案 1 :(得分:13)
您可以使用indexOf获取密钥jsfiddle
if(!Array.prototype.indexOf){
Array.prototype.indexOf = function(val){
var i = this.length;
while (i--) {
if (this[i] == val) return i;
}
return -1;
}
}
var arr = ['a','b','c','d','e'];
var index = arr.indexOf('d'); // return 3
答案 2 :(得分:2)
function arraySearch(arr, val) {
var index;
for (var i = 0; i < arr.length; i++) {
// use '===' if you strictly want to find the same type
if (arr[i] == val) {
if (index == undefined) index = i;
// return false if duplicate is found
else return false;
}
}
// return false if no element found, or index of the element
return index == undefined ? false : index;
}
希望这会有所帮助:)
答案 3 :(得分:1)
这是Array Prototype上的一个方法: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
var array1 = [5, 12, 8, 130, 44];
function findFirstLargeNumber(element) {
return element > 13;
}
console.log(array1.findIndex(findFirstLargeNumber));
// expected output: 3
答案 4 :(得分:0)
如果您打算为一个特定的数组查找大量不同值的索引,则最好使用键值对映射到数组的值和索引的对象。
const letters = ["a", "b", "c"]
const letterIndices = letters.reduce((acc, letter, index) =>
Object.assign(acc, {[letter]: index}), {}
)
letterIndices["b"] // gives 1