JavaScript соединить более 1 значение? - PullRequest
0 голосов
/ 20 января 2020

Как splice строковое значение, чтобы вывод стал только 'LA1','LA4'. Я попробовал метод ниже, но он все еще дал мне string_2 вывод.

var string_1 = 'LA2,LA3'
var string_2 = "LA1,LA2,LA3,LA4";

var unique_1 = string_1.split(',');
var unique_2 = string_2.split(',');

const index = unique_2.indexOf(unique_1);
if (index > -1) {
  unique_2.splice(index, 1);
}
console.log(unique_2); 

Ответы [ 3 ]

1 голос
/ 20 января 2020

Вместо использования splice() Вы можете filter() с includes().

var string_1 = 'LA2,LA3'
var string_2 = "LA1,LA2,LA3,LA4";

var unique_1 = string_1.split(',');
var unique_2 = string_2.split(',');

var filtered = unique_2.filter(s => !unique_1.includes(s))

console.log(filtered); 

Если ваши списки очень большие, вы, возможно, захотите использовать что-то, кроме массива с includes(), например Set, который предлагает поиск с постоянным временем.

0 голосов
/ 20 января 2020

используя уменьшение:

var string_1 = 'LA2,LA3'
var string_2 = "LA1,LA2,LA3,LA4";

var unique_1 = string_1.split(',');
var unique_2 = string_2.split(',');

const result = unique_2.reduce((acc, item) => {
  !string_1.includes(item) && acc.push(item)
  return acc
}, [])

console.log(result)
0 голосов
/ 20 января 2020

Array.prototype.indexOf () находит только один элемент и не может найти массив. Чтобы получить ожидаемое значение, вы можете сделать следующее:

var string_1 = 'LA2,LA3'
var string_2 = "LA1,LA2,LA3,LA4";

var unique_1 = string_1.split(',');
var unique_2 = string_2.split(',');

unique_2 = unique_2.filter(item => !unique_1.includes(item));

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