[英]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.