簡體   English   中英

使用 Ramda 刪除數組中的多個對象

[英]Remove multiple objects in an array using Ramda

ramda 中有沒有辦法刪除 ramda 中的多個對象。

這是我的陣列

const availableFeatures = [
  {
    id: 1,
    name: "TEST 1",
  },
  {
    id: 2,
    name: "TEST 2",
  },
  {
    id: 3,
    name: "TEST 3"
  }
]

我想刪除包含 id 1 和 2 的對象。

我喜歡使用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>

使用R.reject()R.propSatisfies()可以讓您刪除數組中所有對象的id <=到 2 的對象,如下所示:

 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);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>

您可以使用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);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM