есть ли в ramda способ удалить несколько объектов в ramda.
Вот мой массив
const availableFeatures = [ { id: 1, name: "TEST 1", }, { id: 2, name: "TEST 2", }, { id: 3, name: "TEST 3" } ]
Я хочу удалить объект, содержащий идентификаторы 1 и 2.
Мне нравится использовать where для построения предикатов:
where
const x = reject(where({id: flip(includes)([1, 2])})) console.log(x(availableFeatures));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script> <script>const {reject, where, flip, includes} = R;</script> <script> const availableFeatures = [ { id: 1 , name: "TEST 1" }, { id: 2 , name: "TEST 2", }, { id: 3 , name: "TEST 3" } ]; </script>
также что-то вроде этого будет делать:
const blacklist = R.propSatisfies( R.includes(R.__, [1, 2]), 'id', ); const fn = R.reject(blacklist); // ---- const data = [ { id: 1, name: "TEST 1", }, { id: 2, name: "TEST 2", }, { id: 3, name: "TEST 3" } ]; console.log(fn(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>
Вы можете использовать reject():
reject()
const availableFeatures = [ { id: 1, name: "TEST 1", }, { id: 2, name: "TEST 2", }, { id: 3, name: "TEST 3" } ]; const result = R.reject(({id}) => id === 1 || id === 2, availableFeatures); console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
Вы можете использовать это решение
const availableFeatures = [ { id: 1, name: "TEST 1", }, { id: 2, name: "TEST 2", }, { id: 3, name: "TEST 3" } ] const result = R.reject( R.anyPass([ R.propEq('id', 1), R.propEq('id', 2) ]) )(availableFeatures); console.log(result);
Использование R.reject() с R.propSatisfies() может позволить вам удалить все те объекты в вашем массиве, где значение id для объекта <= равно 2, например так:
R.reject()
R.propSatisfies()
id
<=
const availableFeatures = [ { id: 1, name: "TEST 1", }, { id: 2, name: "TEST 2", }, { id: 3, name: "TEST 3" } ]; const res = R.reject(R.propSatisfies(R.gte(2), 'id'))(availableFeatures); console.log(res);