/ / Jak filtrować tablicę na dowolnej pasującej wartości za pomocą aplikacji lodash? - javascript, tablice, lodash

Jak filtrować tablicę na dowolnej pasującej wartości za pomocą aplikacji lodash? - javascript, tablice, lodash

Tak więc mam obiekty, które chcę móc wyszukiwać dla dowolnych dopasowań wartości.

Na przykład:

let arr = [
{
a: "foo",
b: "bar"
},
{
a: "bar",
b: "baz"
},
{
a: "foo",
b: "baz"
}
];

i chcę mieć możliwość filtrowania tablicy tak, aby zawierał dowolny obiekt, który ma właściwość o wartości "foo".

Czy istnieje sposób na zrobienie tego z lodash? Coś jak:

_.filter(arr, function(obj) {
return obj.anyPropertiesMatch("bar");
});

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz użyć filtra Array # z Array # some:

const val = "foo";

const arr = [{"a":"foo","b":"bar"},{"a":"bar","b":"baz"},{"a":"foo","b":"baz"}];

const result = arr.filter((o) => Object.values(o).some((v) => v === val));

console.log(result);

Lub równoważne użycie lodasha _.includes():

const val = "foo";

const arr = [{"a":"foo","b":"bar"},{"a":"bar","b":"baz"},{"a":"foo","b":"baz"}];

const result = _.filter(arr, (o) => _.includes(o, val));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


1 dla odpowiedzi nr 2

W lodash możesz użyć some metoda sprawdzania, czy obiekt ma pole o podanej wartości:

let arr = [
{ a: "foo", b: "bar" },
{ a: "bar", b: "baz" },
{ a: "foo", b: "baz" }
];

let result = _.filter(arr, obj => _.some(obj, val => val === "foo"));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


0 dla odpowiedzi № 3

Używanie LoDash _.filter filtrować tablicę na podstawie wartości obiektu, zdobyć za pomocą _.values i sprawdzane przy pomocy _.includes

let arr = [
{
a: "foo",
b: "bar"
},
{
a: "bar",
b: "baz"
},
{
a: "foo",
b: "baz"
}
];

let res = _.filter(arr, o => _.includes(_.values(o), "foo"));

console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>


0 dla odpowiedzi nr 4

Jest to tak proste, jak to:

_.filter(arr, o=>_.includes(o,"foo"));

możesz użyć funkcji tablicy lodash do dowolnego obiektu bezpośrednio i rozważy on każdą wartość dla każdego elementu.

Oto przykład dla Ciebie:

let arr = [
{
a: "foo",
b: "bar"
},
{
a: "bar",
b: "baz"
},
{
a: "foo",
b: "baz"
}
];

let res = _.filter(arr, o=>_.includes(o,"foo"));
console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>