Проверьте значение свойства объекта внутри массива - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующий массив:

arrayObject = [
    { type: "one" },
    { type: "two" },
    { type: "other" },
];

И у меня также есть следующий массив со значениями:

types = [
    "one",
    "other"
];

Мне нужно проверить, существуют ли эти два значения, еслиони не существуют, я должен предотвратить их продвижение в потоке, в настоящее время я делаю следующее:

arrayObject.filter(object => types.includes(object.type))

И этот код возвращает меня, когда ни один не существует, но также возвращает меня, когда один или другой существует,однако мне нужно знать, существуют ли эти два или нет, у меня это не работает

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Вы также можете использовать Array.from с Array.every и Array.includes:

const arrayObject = [{ type: "one" }, { type: "two" }, { type: "other" }];
const types = ["one", "other"];

const result = types.every(t => Array.from(arrayObject, x=> x.type).includes(t))

console.log(result)

Вы также можете использовать Array.some для более краткого решения:

const arrayObject = [{ type: "one" }, { type: "two" }, { type: "other" }];
const types = ["one", "other"];

const result = types.every(t => arrayObject.some(x => x.type === t))

console.log(result)

А так как у вас есть lodash тег:

const arrayObject = [{ type: "one" }, { type: "two" }, { type: "other" }];
const types = ["one", "other"];

const result = _.every(types, x => _.some(arrayObject, {type: x}))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
0 голосов
/ 19 декабря 2018

Снимите type с arrayObject, используя _.map().Используйте _.intersection() и сравните длину результатов с длиной массива types:

const arrayObject = [{"type":"one"},{"type":"two"},{"type":"other"}];

const types = ["one","other"];

const result = _.eq(
  _.intersection(types, _.map(arrayObject, 'type')).length
, types.length);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
0 голосов
/ 18 декабря 2018

Использование every

if (types.every(t => arrayObject.findIndex(a => a.type === t) > -1))
...