jquery在数组中找到一个带有空格的字符串

时间:2011-06-16 23:08:56

标签: javascript jquery

我该如何使这项工作?我的数组“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

6 个答案:

答案 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)

看来你正在使用jQuery。

您可以制作带有裁剪成员的Array的标准化副本。

arr = $.map(arr, $.trim);

(感谢MeouwFelix。)

答案 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));

This method works (jsFiddle)

答案 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;
        }
    }
}