Как определить, является ли элемент в массиве длиной в один символ и соответствует первому символу любого элемента в другом массиве - PullRequest
0 голосов
/ 21 февраля 2019

Итак, у меня есть ситуация, когда у меня есть массив имен, для которых мне нужно определить, состоит ли какое-либо из этих имен из простого инициала.

Например: Джон, Пол, Дж., Смит, Б., Морган

Мне нужно определить, какие из этих элементов являются инициалами (длина одного символа), а затем сравнить их с другим массивом имен.

Например: Морган, Пол, Джордж, Джон, Смит

Если любой из этих инициалов совпадает с первой буквой любого из имен во втором массиве, мне нужно вернутьЗначение 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
    }
}

Я не уверен, как это сделать.Любой совет?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Простой - используйте 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 голосов
/ 21 февраля 2019

Проверьте длину каждого из имен и равны ли они 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))
0 голосов
/ 21 февраля 2019

Вы можете просто зациклить в каждом массиве и сравнить, как показано ниже.

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);
    }
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...