Return 小写比较后的匹配元素?
Return matching elements after comparing in lower case?
我有这个数组:
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"]
我需要通过将它们与对应的小写字母进行比较来找到这些元素
var fields = ["title", "comment"];
基本上,我需要找出 fields
是否包含在 mainArray
和 return 来自该数组的大写值中:["Title", "Comment"]
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"]
var fields = ["title", "comment"];
var filtered = mainArray.filter(function(elem){
return fields.indexOf(elem.toLowerCase()) != -1;
});
如果小写值包含在 fields
数组中,您可以在检查后过滤该值。
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"],
fields = ["title", "comment"],
result = mainArray.filter(a => fields.includes(a.toLowerCase()));
console.log(result);
ES5
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"],
fields = ["title", "comment"],
result = mainArray.filter(function (a) {
return fields.indexOf(a.toLowerCase()) + 1;
});
console.log(result);
只需 运行 array with for() 并根据需要将结果收集到外部变量中,如下所示:
var need = [];
for(var i in yourArray){
if(){ // compare function
// add to "Need" array
}
}
// print the result
另外,你可以把它包装到函数中。
如果你有一个大阵列更好地使用过滤器。但是如果你有一个巨大的数组,最好使用 ajax 和后端脚本。
您可以使用这个 ES6 函数,它利用地图来获得更好的性能:
function getMatches(a, b) {
var mp = new Map(a.map( s => [s.toLowerCase(), s]));
return b.map(mp.get, mp);
}
// Sample data and call
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"];
var fields = ["title", "comment"];
console.log(getMatches(mainArray, fields));
这将 return 与第二个参数数组一样多的值,undefined
值未找到匹配项。如果您不想知道哪些条目失败了,而只想知道那些匹配的条目,请添加过滤器:
return b.map(mp.get, mp).filter(s => s);
您可以使用Array#filter
方法。见下文。
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"];
var fields = ["title", "comment"];
var res = mainArray.filter(function(v, i) {
return fields.includes(v.toLowerCase());
});
console.log(res);
我有这个数组:
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"]
我需要通过将它们与对应的小写字母进行比较来找到这些元素
var fields = ["title", "comment"];
基本上,我需要找出 fields
是否包含在 mainArray
和 return 来自该数组的大写值中:["Title", "Comment"]
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"]
var fields = ["title", "comment"];
var filtered = mainArray.filter(function(elem){
return fields.indexOf(elem.toLowerCase()) != -1;
});
如果小写值包含在 fields
数组中,您可以在检查后过滤该值。
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"],
fields = ["title", "comment"],
result = mainArray.filter(a => fields.includes(a.toLowerCase()));
console.log(result);
ES5
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"],
fields = ["title", "comment"],
result = mainArray.filter(function (a) {
return fields.indexOf(a.toLowerCase()) + 1;
});
console.log(result);
只需 运行 array with for() 并根据需要将结果收集到外部变量中,如下所示:
var need = [];
for(var i in yourArray){
if(){ // compare function
// add to "Need" array
}
}
// print the result
另外,你可以把它包装到函数中。 如果你有一个大阵列更好地使用过滤器。但是如果你有一个巨大的数组,最好使用 ajax 和后端脚本。
您可以使用这个 ES6 函数,它利用地图来获得更好的性能:
function getMatches(a, b) {
var mp = new Map(a.map( s => [s.toLowerCase(), s]));
return b.map(mp.get, mp);
}
// Sample data and call
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"];
var fields = ["title", "comment"];
console.log(getMatches(mainArray, fields));
这将 return 与第二个参数数组一样多的值,undefined
值未找到匹配项。如果您不想知道哪些条目失败了,而只想知道那些匹配的条目,请添加过滤器:
return b.map(mp.get, mp).filter(s => s);
您可以使用Array#filter
方法。见下文。
var mainArray = ["Title", "AssignedTo", "IssueStatus", "Priority", "Comment", "Category", "RelatedIssues", "V3Comments", "TaskDueDate", "Attachments"];
var fields = ["title", "comment"];
var res = mainArray.filter(function(v, i) {
return fields.includes(v.toLowerCase());
});
console.log(res);