我该如何使这项工作?我的数组“John”的第三个元素中有一个空格。
看看: http://jsfiddle.net/hyHFT/
<style>
div { color:blue; }
span { color:red; }
</style>
<div>"John" found at <span></span></div>
<div>4 found at <span></span></div>
<div>"Karl" not found, so <span></span></div>
<script>var arr = [ 4, " Pete", 8, " John" ];
$("span:eq(0)").text(jQuery.inArray("John", arr));
$("span:eq(1)").text(jQuery.inArray(4, arr));
$("span:eq(2)").text(jQuery.inArray("Karl", arr));
</script>
由于 格拉西亚斯! el Mescal
答案 0 :(得分:3)
尝试这样做:
var arr = [ 4, " Pete", 8, " John" ];
arr = $(arr).map(String.prototype.trim);
...
map
函数将trim
应用于数组中的每个元素,并将其结果(不带空格的字符串)存储到一个新数组中,位于相同的位置。
对阵列进行清理后,您将找到这些元素。
只是旁注,它会将数字转换为字符串。照顾好。
祝你好运!修改强>
如果您想保留原始类型,请使用:
$(arr).map(function(key, val) { return (typeof(val) == "string") ? val.trim() : val; })
不言自明,不是吗?
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以尝试使用grep
功能。
jQuery.grep(arr, function(n, i){
if (jQuery.trim(n) == 'John') $("span:eq(0)").text(i);
return false;
});
答案 3 :(得分:0)
你的阵列有“John”,但你正在检查“John”。这些显然是不同的字符串。这对我有用:
<style>
div { color:blue; }
span { color:red; }
</style>
<div>"John" found at <span></span></div>
<div>4 found at <span></span></div>
<div>"Karl" not found, so <span></span></div>
<script>var arr = [ 4, " Pete", 8, " John" ];
$("span:eq(0)").text(jQuery.inArray(" John", arr));
$("span:eq(1)").text(jQuery.inArray(4, arr));
$("span:eq(2)").text(jQuery.inArray("Karl", arr));
</script>
或者你想要做一些忽略空格的模糊匹配?
答案 4 :(得分:0)
如果要忽略空格,请使用修剪后的副本。确保只修剪字符串,否则4
的查找将失败:
var arr = [ 4, " Pete", 8, " John" ];
var trimmedArr = jQuery.map(arr, function(item)
{
return typeof item == "string" ? jQuery.trim(item) : item;
});
$("span:eq(0)").text(jQuery.inArray("John", trimmedArr));
$("span:eq(1)").text(jQuery.inArray(4, trimmedArr));
$("span:eq(2)").text(jQuery.inArray("Karl", trimmedArr));
答案 5 :(得分:0)
尝试不使用jQuery,而是手动遍历数组并使用RegExp。将jQuery.inArray("John", arr)
替换为inArray("John", arr)
,并将以下函数放入脚本中:
function inArray(string, arr){
var re = RegExp(string, "g");
for(var i in arr){
if(arr[i].search(re) != -1){
return i;
}
}
}