Javascript 函数用于扫描数组列表中的字符并返回包含该字符的所有数组

Javascript 函数用于扫描数组列表中的字符并返回包含该字符的所有数组,javascript,arrays,Javascript,Arrays,我正在尝试创建一个函数,该函数将扫描所有数组中的一个字符,并返回包含该字符的所有数组。例如,如何检查数组中的第一个字符串是否以“\”结尾 这就是我到目前为止所做的: 对于喜欢在此处查看我的代码的用户: function searchNames(logins){ var str = "_"; for (var i = 0; i != logins.length; i++) { var substring = logins[i]; if (str.indexOf(substr

我正在尝试创建一个函数,该函数将扫描所有数组中的一个字符,并返回包含该字符的所有数组。例如,如何检查数组中的第一个字符串是否以“\”结尾

这就是我到目前为止所做的:

对于喜欢在此处查看我的代码的用户:

function searchNames(logins){
 var str = "_";
 for (var i = 0; i != logins.length; i++) {
     var substring = logins[i];
     if (str.indexOf(substring) != - 1) {
         return substring;
        }
    }
        return null; 
}

这看起来像是array的一个经典用例

有一个函数叫做。这里有一个干净、实用的方法

function hasUnderscore (string) {
  return string.substr(-1) == '_' ? true : false
}

function doWithNthGetter (nth, func) {
  return function (array) {
    return func(array[nth])
  }
}

var checkThis = [ [ "marco", "marco@polo.com" ], [ "john_", "john@doe.com" ] ]

checkThis.filter(nthGetter(2, hasUnderscore))

应用JavaScript筛选器将完成以下工作:

[ [ "marco", "marco@polo.com" ], [ "john_", "john@doe.com" ] ].filter(
    function(data){ 
    return data[0]?data[0].lastIndexOf('_')==data[0].length-1:false;
});

稍微调整了你的代码。如果您正在查找以“\u”结尾的字符串

function searchNames(logins){
 var str = "_";
 var newArray=[];   
 for (var i = 0; i < logins.length; i++) {
     var substring = logins[i][0];
     if (substring[substring.length-1]==str) {
         newArray.push( logins[i]);
        }
    }
        return newArray; 
}
函数搜索名称(登录名){
var str=“389;”;
var newArray=[];
对于(变量i=0;i

我建议创建一个特殊的函数来调用这个场景,您可以根据回调比较函数进行过滤

function searchArray(arr2d,compare){
 return arr2d.filter(function(arr){
  return compare(arr);
 });
}
一旦这一点到位,您就可以接受您的输入

var input = [ [ "marco", "marco@polo.com" ], [ "john_", "john@doe.com" ] ];
然后使用输入和回调调用搜索

var result = searchArray(input,function(arr){ 
    var s = arr[0];//check that the first string
    return s[s.length-1] == "_";//ends in _
});//this callback function can be modified if the conditions change

堆栈代码段

函数搜索数组(arr2d,比较){
返回arr2d.过滤器(函数(arr){
返回比较(arr);
});
}
变量输入=[[“马可”,”marco@polo.com“],[“约翰”,”john@doe.com" ] ];
var result=searchArray(输入,函数(arr){
var s=arr[0];
返回s[s.length-1]==“u”;
});
控制台日志(结果);
document.getElementById('choice').innerHTML=JSON.stringify(结果)

//应该输出[[“john\uuux”john@doe.com“]]-你的意思是输出应该是这样?是的,你说得对!更正。你的代码应该在你的问题中,而不仅仅是在一个外部链接中。代码现在包含在问题中。谢谢大家花时间!一开始,我没有看到OP只希望最后一个字符是
,我已经编辑了我的answer@rainbowloops我已经添加了两个选项,使用任何适合您需要的选项如果只想筛选那些以
\uu
结尾的选项,那么您为什么希望看到
[“barfoot”,“bar>_foo@fb.com"‌​]
?请注意,您的函数不会过滤掉空字符串。
john_ux\uz
也会被过滤掉,但它会以
\uuz
结束。这对我来说是最难的任务之一。谢谢!这对
'john_x\ux'
仍然不起作用,它会被过滤掉。
john_x\ux\uz
有效de>[“马可”marco@polo.com“],[“约翰”john@doe.com“]].filter(函数(数据){返回数据[0]?数据[0]。lastIndexOf(“''')==数据[0]。长度-1:false;});
var input = [ [ "marco", "marco@polo.com" ], [ "john_", "john@doe.com" ] ];
var result = searchArray(input,function(arr){ 
    var s = arr[0];//check that the first string
    return s[s.length-1] == "_";//ends in _
});//this callback function can be modified if the conditions change