[英]How to detect is an element in an array is one character long and matches the first character of any element in another array
因此,在这种情况下,我需要一个名称数组,以检测其中的任何一个名称是否仅包含缩写。
例如:乔恩,保罗,G,史密斯,B,摩根
我需要检测其中哪些元素是缩写(一个字符长),然后将它们与另一个名称数组进行比较。
例如:Morgan,Paul,George,Jon,Smith
如果这些缩写中的任何一个与第二个数组中任何名称的第一个字母匹配,我都需要返回true值。
var myStringArray = ["Jon", "Paul", "G", "Smith", "B", "Morgan"];
var myStringArray2 = ["Morgan", "Paul", "George", "Jon", "Smith"];
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
if (myStringArray[i].length == 1) {
//Compare myStringArray[i] to every value of myStringArray2
}
}
我不确定该如何处理。 有什么建议吗?
简单-将some
与filter
和startsWith
一起使用,如下所示:
const namesAndInitials = ["Jon", "Paul", "G", "Smith", "B", "Morgan"]; const names = ["Morgan", "Paul", "George", "Jon", "Smith"]; const initials = namesAndInitials.filter(e => e.length == 1); const firstLetter = initials.some(initial => names.find(name => name.startsWith(initial))); console.log(firstLetter); //Should return true because G for George
检查每个名称的长度以及它们是否等于0,然后使用findIndex
检查第二个数组中的任何名称是否匹配:
var myStringArray = ["Jon", "Paul", "G", "Smith", "B", "Morgan"]; var myStringArray2 = ["Morgan", "Paul", "George", "Jon", "Smith"]; function findName(arr1, arr2) { for (let initial of arr1) { if (initial.length === 1) { return arr2.findIndex(name => name[0] === initial) != -1 } } } console.log(findName(myStringArray, myStringArray2))
你可以只通过每个阵列循环 ,并如下图所示进行比较。
var arrWithInitials = ["Jon", "Paul", "G", "Smith", "B", "Morgan"]; var arrWithoutInitials = ["Morgan", "Paul", "George", "Jon", "Smith"]; var arr = []; arrWithInitials.forEach(e => { if (e.length == 1) { arr.push(e); } }); arr.forEach(e => { arrWithoutInitials.forEach(element => { if (e == element[0]) { console.log(true); } }); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.