Как сравнить третий в каждом массиве в каждой строке? - PullRequest
1 голос
/ 18 февраля 2020

Если у меня есть два массива

A = [ "B,C,D"
      "W,F,G"
      "M,S,E"
    ]
D = [E]

и я хочу сравнить D ИЛИ G с E (Я имею в виду третий в каждой строке), и если они равны, может показать все строки для меня. Третий в каждой строке - часть каждой строки, и я хочу сравнить третью. Если она равна, показать, что в строке одинаковая переменная. Я написал этот код, но не дал мне ответ, который мне нужен:

 for(var k=0 ; k<A.length ; k++){
    if(A[k].split(",")[2] === E) {
       finalSuccessServices = A;
       console.log(finalSuccessServices );
     }

Как я могу улучшить свой код, чтобы получить строку с моей равной переменной?

Ответы [ 4 ]

1 голос
/ 18 февраля 2020

Вы можете использовать find(), чтобы получить совпадающую строку, если у вас есть одно совпадение:

const A = [ "B,C,D",
      "W,F,G",
      "M,S,E"
    ];
const D = ['E'];

let result = A.find(str => str.split(',')[2] === D[0]);

console.log(result)
0 голосов
/ 18 февраля 2020
  1. Используйте split и деструктурируйте, чтобы получить третий элемент
  2. Сравните третье значение и первое (из массива D)
  3. Журнал консоли и pu sh в массив finalSuccessServices.

const A = ["B,C,D", "W,F,G", "M,S,E"];
const D = ["E"];

const [first] = D;
const finalSuccessServices = [];
A.forEach(line => {
  const [,, third] = line.split(",");
  if (third === first) {
    console.log(line);
    finalSuccessServices.push(line);
  }
});

console.log("finalSuccessServices", finalSuccessServices);
0 голосов
/ 18 февраля 2020

Вы можете использовать функцию filter вместе с функцией includes, чтобы выбрать те строки, которые имеют третью букву в массиве D.

let A = [ "B,C,D", "W,F,G", "M,S,E" ],
    D = ["E"],
    result = A.filter(s => {
      let [,,C] = s.split(",");
      return D.includes(C);
    });
    
console.log(result);
0 голосов
/ 18 февраля 2020

Вы можете отфильтровать массив и посмотреть с помощью includes.

var array = ["B,C,D", "W,F,G", "M,S,E"],
    pattern = ['E'],
    result = array.filter(s => pattern.includes(s.split(',')[2]));

console.log(result);

Если вам нужен только первый, возьмите find.

var array = ["B,C,D", "W,F,G", "M,S,E"],
    pattern = ['E'],
    result = array.find(s => pattern.includes(s.split(',')[2]));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...