Lodash - Выберите элементы, которых нет в массиве [duplicate]

jjnguy имел правильное (если немного избыточно) в предыдущей версии .

.*?[^0-9].*

@Chad , ваше регулярное выражение,

\b.*[a-zA-Z]+.*\b

должно, вероятно, допускать не буквы (например, пунктуацию), хотя примеры Svish не включали их. Основным требованием Svish было: не все будут цифрами.

\b.*[^0-9]+.*\b

Затем вам не нужен символ +, поскольку все, что вам нужно, - это гарантировать, что 1 не цифра находится там (больше может быть в там как покрыто. * на концах.)

\b.*[^0-9].*\b

Затем вы можете покончить с \ b на обоих концах, поскольку это ненужные ограничения (ссылаясь на буквенный символ и _).

.*[^0-9].*

Наконец, обратите внимание, что это последнее регулярное выражение показывает, что проблема может быть решена только с помощью основ, основанных на десятилетия (например, нет необходимости в функции поиска). На английском языке вопрос логически эквивалентен простому запросу, чтобы в строке содержался 1 символ встречного примера.

Мы можем проверить это регулярное выражение в браузере, скопировав следующее в строку местоположения, заменив строку «6576576i7567» с тем, что вы хотите проверить.

javascript:alert(new String("6576576i7567").match(".*[^0-9].*"));

0
задан Caio Kawasaki 16 January 2019 в 14:25
поделиться

1 ответ

Вы можете использовать метод Lodash differenceBy и пропустить id prop, если хотите найти разницу на основе id. В противном случае вы можете использовать _.differenceWith(prev, next, _.isEqual)

const prev = [{"id":1},{"id":2},{"id":3},{"id":4}]
const next = [{"id":1},{"id":2},{"id":4}]

const diff = _.differenceBy(prev, next, 'id')
console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>

На случай, если вы захотите проверить разные ключи или имена идентификаторов. Вы можете использовать differenceWith и передать пользовательскую функцию проверки равенства.

const prev = [{"id":1},{"id":2},{"id":3},{"id":4}]
const next = [{"contact_id":1},{"contact_id":2},{"contact_id":4}]

const checkId = (prev, next) => {
  return prev.id == next.contact_id
}

const diff = _.differenceWith(prev, next, checkId)
console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>

0
ответ дан Nenad Vracar 16 January 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: