我想將一個陣列更改為這樣的物件:
array = ["blue" , "txt2" , "red" ,"txt4" , "txt5" , "txt6" ,"txt7" , "txt8" , "txt9" ]
pages = {"page1" :["blue","txt2", "red"] , "page2" : ["txt4", "txt5", "txt6"], "page3" : ["txt7" ,"txt8", "txt9"]
pages物件中的每個鍵都應該有一個陣列值,其中包含 3 個陣列元素(最后一個鍵可以少一些),例如,如果一個陣列有 110 個元素,我們將有 37 個pages(page1、page 2、...、page37)和 page37將有 1 個元素。
所以我想把陣列中的每 3 個元素作為pages物件中鍵的值
但我不知道該怎么做..謝謝你的幫助
uj5u.com熱心網友回復:
您可以通過使用方法迭代array并3從array每次迭代中提取專案來做到這一點splice,如下所示:
let array = ["blue" , "txt2" , "red" ,"txt4" , "txt5" , "txt6" ,"txt7" , "txt8" , "txt9", "text10" ]
let pages= {}, i= 1;
while(array.length > 0){
pages[`page${i }`] = array.splice(0,3)
}
console.log(pages)
通過這種方式,您會丟失 中的原始值array,如果您想保留array未修改的專案,您可以復制原始資料let copiedArray = [...array],然后在 上呼叫 splice 方法copiedArray。
uj5u.com熱心網友回復:
獲取每第三個索引并將從該點到該點的所有元素加上三(如果該索引接近末尾,它不會出錯;它只會添加剩余的元素):
const initial = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
let paginated = {};
let counter = 0
while (counter < initial.length) {
paginated['page' parseInt(counter / 3 1)] = initial.slice(counter, counter 3);
counter = 3;
}
console.log(paginated);
uj5u.com熱心網友回復:
對于更可配置的解決方案,您可能會查看chunk用于輸入陣列初始劃分的實用程式函式,然后根據需要將其映射到結果物件(此處使用Object.fromEntries并映射到結果分塊陣列以根據索引分配“頁面”鍵)。
function chunk(arr, chunkSize) {
const result = [];
for (let i = 0; i < arr.length; i = chunkSize) {
result.push(arr.slice(i, i chunkSize));
}
return result;
}
const array = ['blue', 'txt2', 'red', 'txt4', 'txt5', 'txt6', 'txt7', 'txt8', 'txt9'];
const result = Object.fromEntries(
chunk(array, 3).map((chunk, index) => [`page${index 1}`, chunk])
);
console.log(result);
請參閱:將陣列拆分為多個塊以供討論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/389828.html
標籤:javascript 数组
下一篇:比較陣列中的物件
