end*_*hin 7 javascript arrays jquery
我有一系列元素
["page=4", "sortOrder=asc", "datePosted=all-time"]
Run Code Online (Sandbox Code Playgroud)
使用javascript或jquery我想找到开始的元素的索引 "sortOrder=".我不会在编译时知道这个元素的完整字符串,只是"sortOrder="部分.
我假设这可以在不需要迭代数组并执行的情况下完成item.match("sortOrder="),但也许我错了.
谢谢你的帮助.
pmr*_*ule 15
如果要在与特定正则表达式匹配的数组中获取值:
...只获得第一个匹配的值,你可以使用find()
const array = ["page=4", "sortOrder=asc", "datePosted=all-time", "sortOrder=desc"];
const match = array.find(value => /^sortOrder=/.test(value));
// match = "sortOrder=asc"
Run Code Online (Sandbox Code Playgroud)
...要获取所有匹配结果的数组,可以使用filter()
const array = ["page=4", "sortOrder=asc", "datePosted=all-time", "sortOrder=desc"];
const matches = array.filter(value => /^sortOrder=/.test(value));
// matches = ['sortOrder=asc', 'sortOrder=desc'];
Run Code Online (Sandbox Code Playgroud)
...要获取第一个匹配的索引,可以使用findIndex()
const array = ["page=4", "sortOrder=asc", "datePosted=all-time", "sortOrder=desc"];
const index = array.findIndex(value => /^sortOrder=/.test(value));
// index = 1;
Run Code Online (Sandbox Code Playgroud)
如果您没有使用ES6,这是ES5中的代码.
可悲的是,indexOf中没有部分匹配...尝试这个,看看是否有帮助:
Array.prototype.MatchInArray = function (value) {
var i;
for (i=0; i < this.length; i++) {
if (this[i].match(value)) {
return i;
}
}
return -1;
};
Run Code Online (Sandbox Code Playgroud)