Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中搜索数组中以特定字符结尾的值_Javascript_Regex_Arrays - Fatal编程技术网

在JavaScript中搜索数组中以特定字符结尾的值

在JavaScript中搜索数组中以特定字符结尾的值,javascript,regex,arrays,Javascript,Regex,Arrays,因此,我正在寻找用javascript编写简单函数的帮助。我要做的是创建一个包含6个名称的数组,只打印以“ie”或“y”结尾的名称 这是我的代码-感谢您的帮助。不幸的是,它从未达到以下功能:( //名称数组 var nameList=新数组(“Freddie”、“Mary”、“Thomas”、“Suzie”、“Terry”、“Kevin”); //在搜索前打印姓名 文件。书写(姓名列表); 功能e_名称(名称列表){ 对于(var index=0;index

因此,我正在寻找用javascript编写简单函数的帮助。我要做的是创建一个包含6个名称的数组,只打印以“ie”或“y”结尾的名称

这是我的代码-感谢您的帮助。不幸的是,它从未达到以下功能:(

//名称数组
var nameList=新数组(“Freddie”、“Mary”、“Thomas”、“Suzie”、“Terry”、“Kevin”);
//在搜索前打印姓名
文件。书写(姓名列表);
功能e_名称(名称列表){
对于(var index=0;index
使用
/(即| y)$/
($用于匹配结尾)对其进行测试:

if (/(ie|y)$/.test(name))
不幸的是,它从未达到以下功能:(

在代码中,您定义了一个函数,但从未执行过它。请按如下方式执行:

e_names(namesList);
循环有一个错误:

for (var index = 0; index < arrayList.length; index++) {
我不确定等于正则表达式意味着什么,但我猜它不会满足您的需要。我想您需要.test函数,例如:

if (/\bie\b/.test(name) || /\by\b/.test(name))
您的模式包括
\b
,单词边界在之前和在y或ie之后。因此,它将只匹配以i或ie作为精确字符串或其周围带有空格的字符串。它们将不匹配
数组
cookie
。我认为您的意思是将它们锚定到字符串的末尾由@xdazz的回答建议。他甚至为您将这两个表达式组合在一起:

if (/(ie|y)$/.test(name))
最后,您将双倍递增
索引

index++;
这只会在“Freddie”、“Thomas”和“Terry”上迭代,因为您会增加两次。循环构造末尾的
index++
就足够了。去掉这一行

现在总共:

//An array of names
var nameList = [ "Freddie", "Mary", "Thomas", "Suzie", "Terry", "Kevin" ];
//Prints names before searching
document.write(nameList);

function e_names(names) {
    for (var index = 0; index < names.length; index++) {
        var name = arrayList[index];
        if (/(ie|y)$/.test(name)) {
            document.write("",name, " </ br>");
        }
    } //End of for loop
} //End if method

e_names(nameList);
//名称数组
变量名称列表=[“弗雷迪”、“玛丽”、“托马斯”、“苏西”、“特里”、“凯文”];
//在搜索前打印姓名
文件。书写(姓名列表);
函数e_名称(名称){
对于(var index=0;index
请注意,我重命名了该参数,以便它不会与作用域混淆,并且我还在if块周围放了大括号。我通常不会更改其他人的代码样式,但我觉得在这种情况下需要它来使其更清晰


我还更改了数组结构以使用文字表示法。围绕
新数组
构造函数已经有很多争论。对于这个例子来说可能是安全的,但是如果有单个元素或者数组内容是动态的,它会让人困惑。例如,什么是
新数组(17)
mean?它意味着创建一个包含17个空引用的数组。它不会创建一个包含17个数字的数组。因此,我的建议是使用
[]
语法。有关详细信息,请参见

从何处调用函数?
\b
表示单词边界。因此,您的表达式将测试字符串是否包含
ie
y
作为单个单词(如果您正确使用它们)。我建议阅读以更好地了解正则表达式的使用方式(提示:不要将它们与要测试的值进行比较).
//for循环结束
——奇怪的是,这条评论真的对你有帮助吗?要根据正则表达式测试字符串,请调用后者的.P.s。它是


,而不是
索引++;
,在你的代码中两次。感谢你的全面回答,并提到了数组文字。这一切都很重要rtant!Brandon-非常感谢你,你的解释非常有用!我肯定不是有意要包含索引++两次,在多次更改代码的过程中忘记了更改我的命名方案。最后..愚蠢的我,我甚至没有注意到我从未调用过该函数!!非常感谢我将要签出的建议你留下的链接!!谢谢大家的帮助![“Freddie”、“Mary”、“Thomas”、“Suzie”、“Terry”、“Kevin”]。过滤(/./.test,/.(ie | y)$/)。加入(“
”)我喜欢@dandavid的方法。这是非常周到的。谢谢你在这方面的帮助!
index++;
//An array of names
var nameList = [ "Freddie", "Mary", "Thomas", "Suzie", "Terry", "Kevin" ];
//Prints names before searching
document.write(nameList);

function e_names(names) {
    for (var index = 0; index < names.length; index++) {
        var name = arrayList[index];
        if (/(ie|y)$/.test(name)) {
            document.write("",name, " </ br>");
        }
    } //End of for loop
} //End if method

e_names(nameList);