使用 "grep" 进行条件匹配并打印 jQuery 中的数组值

Using "grep" for conditional matching and printing array values in jQuery

我正在尝试打印或警告数组 alpha 中的值,这些值从字母 "P" 开始。因此,我必须收到 2 个警报,即 Peter 和 Pamela。但是,我无法获得所需的 2 个警报。有人可以帮助我仅使用 grep 打印两个 "P" 起始值吗?

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<script>
    var alpha = ["Peter","Jones","Pamela"];
    $.grep(alpha,function(i,value){if (alpha[value]=="P*") {alert (alpha[value]) ;} })
</script>
</body>
</html>

这个怎么样if(alpha[value].indexOf('P') == 0)

注意 grep 将 return 一个数组,如果你只使用 alert 那么你最好使用 each 我认为。

为什么不使用 each 循环,$.grep 用于过滤数组。
要检查字符串中的第一个字母,请使用 indexOf 并查看匹配项是否为零、字符串中的第一个字母等

var alpha = ["Peter","Jones","Pamela"];
    
$.each(alpha, function(index, item) {
    if ( item.indexOf('P') === 0 ) alert(item);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果只用$.grep也是一样

$.grep(alpha, function(item, index) {
    if ( item.indexOf('P') === 0 ) alert(item);
});

只是开销更大,因为 $.grep 需要 return 值来过滤

如果你真的想使用 $.grep,试试这个:

$.grep(alpha, function(e,i) {return e.indexOf('P')===0;}).each(function(i,v){alert(v);});