簡體   English   中英

我如何根據 React 中數組對象的數量創建一個數值數組?

[英]How can I create a numeric array based on the number of array objects in React?

我有一個名為members?.admins 我想根據members?.admins的長度創建一個數字數組。

作為例外,如果 members?.admins 的長度為 1 到 5,則應將 [1] 作為默認值。 也就是說,默認值必須是無條件的[1]

如果members?.admins的數量是 5,我想用數字表示[1] ,如果有10 ,我想用數字表示[1,2] 另外,如果有11 ,它應該是[1,2]

這時候我想在第一次渲染時使用useEffect setNumbers 來創建一個numbers中的數字數組。

我怎樣才能做到這一點?

const members?.admins = [{memberId:"21",name:"jack21"},{memberId:"20",name:"jack20"},{memberId:"14",name:"jack14"},{memberId:"13",name:"jack13"},{memberId:"11",name:"jack11"},{memberId:"10",name:"jack10"},{memberId:"7",name:"jack7"},{memberId:"4",name:"jack4"},{memberId:"3",name:"jack3"},{memberId:"2",name:"jack2"},{memberId:"1",name:"jack1"}];
const [numbers, setNumbers] = useState([1]);

useEffect(() => {
  setNumbers();
}, []);

預計 output:

  if members?.admins.length =  1~5
    it shuld be 
    number = [1]
    
    if members?.admins.length = 6~10
    it shuld be 
    number = [1,2]

    if members?.admins.length = 11~15
    it shuld be 
    number = [1,2,3]

在這里您可以使用長度創建數組

useEffect(() => {
  const array = [...Array(Math.ceil( members?.admins.length / 5))].map((_, i)=> i+1)
  setNumbers(array);
}, []);

 let members = {admins: [1,2,3,4,5,6,7,8,9,10]} console.log(Array(Math.ceil((members?.admins.length || 0) / 5)).fill(undefined).map((el, i) => i + 1))

 let admins = ["a","b","c","d","e","f","g"]; let result = Array.from({length: Math.ceil(admins.length / 5)}, (_, i) => i + 1); console.log(result);

您可以使用Math.ceil獲取所需的長度,然后稍后填充數組。

 const members = { admins: Array(6) } const reqLength = Math.ceil(members?.admins?.length / 5); const reqArray = Array(reqLength).fill().map((v, i) => i + 1); console.log(reqArray);

const members?.admins = [{memberId:"21",name:"jack21"},{memberId:"20",name:"jack20"},{memberId:"14",name:"jack14"},{memberId:"13",name:"jack13"},{memberId:"11",name:"jack11"},{memberId:"10",name:"jack10"},{memberId:"7",name:"jack7"},{memberId:"4",name:"jack4"},{memberId:"3",name:"jack3"},{memberId:"2",name:"jack2"},{memberId:"1",name:"jack1"}];
const [numbers, setNumbers] = useState([1]);

useEffect(() => {
    let number = [];
    let mb_length = members?.admins.length;
    if(mb_length%5 === 0){
        let mbb = (mb_length - mb_length%5)/5;
        number = Array.from({length: mbb}, (_, i) => i + 1)
    }else{
        let mbb = (mb_length - mb_length%5)/5;
        number = Array.from({length: mbb+1}, (_, i) => i + 1)
    }
    
    
  setNumbers(number);
}, []);

暫無
暫無

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

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