Javascript 如何在三个数组中的一个数组中查找元素,然后返回父数组名?
我试图检查三个数组中是否存在元素。我不知道如何返回找到元素的数组的名称。谁能告诉我正确的方向吗 我编写了一个函数,该函数将搜索中的元素作为参数,然后返回数组名:Javascript 如何在三个数组中的一个数组中查找元素,然后返回父数组名?,javascript,Javascript,我试图检查三个数组中是否存在元素。我不知道如何返回找到元素的数组的名称。谁能告诉我正确的方向吗 我编写了一个函数,该函数将搜索中的元素作为参数,然后返回数组名: var arr1 = ['a','b','c','d']; var arr2 = ['e','f','g','h']; var arr3 = ['i','j','k','l']; function chkElem(elem) { var id = elem; var isFound = null;
var arr1 = ['a','b','c','d'];
var arr2 = ['e','f','g','h'];
var arr3 = ['i','j','k','l'];
function chkElem(elem)
{
var id = elem;
var isFound = null;
if(arr1.indexOf(id) || (arr2.indexOf(id) || (arr3.indexOf(id))))
{
isFound = ????
}
return isFound;
}
我不确定如何将父数组名称分配给“isFound”变量
谢谢。逐个测试:
if (arr1.indexOf(id) > -1) {
isFound = arr1;
} else if (arr2.indexOf(id) > -1) {
isFound = arr2;
} else if (arr3.indexOf(id) > -1) {
isFound = arr3;
}
或者,创建多维数组:
var arr = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
var isFound = null;
for (var i = 0; i < arr.length; i++) {
if (arr[i].indexOf(elem) > -1) {
isFound = arr[i];
break;
}
}
var-arr=[
[a'、'b'、'c'、'd'],
[e'、'f'、'g'、'h'],
['i'、'j'、'k'、'l']
];
var isFound=null;
对于(变量i=0;i-1){
isFound=arr[i];
打破
}
}
逐个测试:
if (arr1.indexOf(id) > -1) {
isFound = arr1;
} else if (arr2.indexOf(id) > -1) {
isFound = arr2;
} else if (arr3.indexOf(id) > -1) {
isFound = arr3;
}
或者,创建多维数组:
var arr = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
var isFound = null;
for (var i = 0; i < arr.length; i++) {
if (arr[i].indexOf(elem) > -1) {
isFound = arr[i];
break;
}
}
var-arr=[
[a'、'b'、'c'、'd'],
[e'、'f'、'g'、'h'],
['i'、'j'、'k'、'l']
];
var isFound=null;
对于(变量i=0;i-1){
isFound=arr[i];
打破
}
}
当您有一组东西时,将它们存储在数组(如果它们是有序的)或对象(如果它们是命名的)中。如果你发现了一堆名称几乎相同的变量,你可能做错了什么
var things = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
然后您可以在其上循环:
for (var i = 0; i < things.length; i++) {
var thing = things[i];
if (thing.indexOf(id) > -1) { // indexOf returns -1 if not found, and the index (starting from 0) if it is.
return i;
}
}
return null;
for(var i=0;i-1){//indexOf如果找不到则返回-1,如果找到则返回索引(从0开始)。
返回i;
}
}
返回null;
当您有一组东西时,将它们存储在数组(如果它们是有序的)或对象(如果它们是命名的)中。如果你发现了一堆名称几乎相同的变量,你可能做错了什么
var things = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
然后您可以在其上循环:
for (var i = 0; i < things.length; i++) {
var thing = things[i];
if (thing.indexOf(id) > -1) { // indexOf returns -1 if not found, and the index (starting from 0) if it is.
return i;
}
}
return null;
for(var i=0;i-1){//indexOf如果找不到则返回-1,如果找到则返回索引(从0开始)。
返回i;
}
}
返回null;
在函数逻辑中不应使用“变量名”。相反,将数组设为对象的属性并返回属性名称:
var arrays = {
"arr1": ['a','b','c','d'],
"arr2": ['e','f','g','h'],
"arr3": ['i','j','k','l']
};
for (var name in arrays)
if (arrays[name].indexOf(id) > -1)
return name;
return null;
或者,更好的方法是使用数组数组来搜索并返回索引:
var arrays = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
for (var i=0; i<arrays.length; i++)
if (arrays[i].indexOf(id) > -1)
return i;
return -1;
var数组=[
[a'、'b'、'c'、'd'],
[e'、'f'、'g'、'h'],
['i'、'j'、'k'、'l']
];
对于(变量i=0;i-1)
返回i;
返回-1;
在函数逻辑中不应使用“变量名”。相反,将数组设为对象的属性并返回属性名称:
var arrays = {
"arr1": ['a','b','c','d'],
"arr2": ['e','f','g','h'],
"arr3": ['i','j','k','l']
};
for (var name in arrays)
if (arrays[name].indexOf(id) > -1)
return name;
return null;
或者,更好的方法是使用数组数组来搜索并返回索引:
var arrays = [
['a','b','c','d'],
['e','f','g','h'],
['i','j','k','l']
];
for (var i=0; i<arrays.length; i++)
if (arrays[i].indexOf(id) > -1)
return i;
return -1;
var数组=[
[a'、'b'、'c'、'd'],
[e'、'f'、'g'、'h'],
['i'、'j'、'k'、'l']
];
对于(变量i=0;i-1)
返回i;
返回-1;
首先,小心indexOf()
陷阱-如果它找不到请求的字符串,它将返回-1-这是一个真实值-因此您需要像这样显式检查:
if (arr1.indexOf(id) != -1)
不是
truthy/falsy概念还意味着,如果字符串是数组中的第一个元素,因此indexOf()
返回false,则这是一个falsy,因此即使进行了匹配,您的条件实际上也会失败
其次,您不能返回数组的名称,或者更准确地说,返回在JS内存中引用它的变量的名称。您可以:
1) 返回数组本身
if (arr1.indexOf(id) != -1) return arr1;
2) 将数组存储在中心对象中,并返回在其中找到它的属性的名称
var arrs = {
'one': ['foo', 'bar']
/* two, three etc */
};
for(var i in arrs)
if (arrs[i].indexOf('foo') != -1)
return i;
首先,要小心
indexOf()
trap-如果它找不到请求的字符串,它将返回-1-这是一个真实值-因此您需要像这样显式检查:
if (arr1.indexOf(id) != -1)
不是
truthy/falsy概念还意味着,如果字符串是数组中的第一个元素,因此indexOf()
返回false,则这是一个falsy,因此即使进行了匹配,您的条件实际上也会失败
其次,您不能返回数组的名称,或者更准确地说,返回在JS内存中引用它的变量的名称。您可以:
1) 返回数组本身
if (arr1.indexOf(id) != -1) return arr1;
2) 将数组存储在中心对象中,并返回在其中找到它的属性的名称
var arrs = {
'one': ['foo', 'bar']
/* two, three etc */
};
for(var i in arrs)
if (arrs[i].indexOf('foo') != -1)
return i;