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