簡體   English   中英

通過比較兩個 Arrays 獲取值

[英]Getting Values from comparing Two Arrays

我有兩個數組一個是 state 像這樣

const [state,setState] = useState([])

另一個是在提交時從表單中獲取;

   ids = [4,5,6]
setState(ids)

現在,當我第二次更新 state 時,值在 state 中有 4、5、6。 所以值被重復,即 4,5,6,4,5,6

我想要的是確保只有數組中不存在的元素被推送而不是全部,並且我得到有效的 output 如下所示。

4,5,6,7

如果加了 7。

我所做的就是這樣,這是完全錯誤的

 const filterss = [...state];
      setState([]);
      filterss.push(values);
      setState(filterss);
  const filters = [...state];
  values.forEach(item => {
    if (filters.indexOf(item) < 0) {
      filters.push(item);
    }
  })
  setState(filters);

 const ids=[4,5,6] let formSubmitIds=[4,5,6,7] let uniquieIds=[...new Set([...ids,...formSubmitIds])] console.log(uniquieIds)

只需使用此邏輯相應地設置狀態,即setState(uniquieIds)

ids是 state 中存儲的值

formSubmitIds是您在提交表單時獲得的新數組

[...ids,...formSubmitIds]將合並 arrays

Set用於刪除重復項

[......new Set]將 Set 轉換回僅具有唯一 ID 的數組

首先將所有舊值和新值推送到單個數組中,然后嘗試使用 Set() 獲取數組中的唯一值。 這是代碼。

setState(new Set(arrayName)) 

使用Set()構造函數來實現您的目標。

嘗試:

const [state, setState] = useState([])

const ids = [4,5,6]
const formSubmittedIds = [4,5,6,7]

setState([...new Set([...ids, ...formSubmittedIds])]) // Sets [4, 5, 6, 7] to the state

快樂編碼:)

暫無
暫無

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

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