gpt4 book ai didi

javascript - 根据行为怪异的页面的字符限制压缩的字符串数组

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:29 25 4
gpt4 key购买 nike

我正在尝试将单个操作(字符串)的数组转换为由页面的多个操作组成的较少字符串的数组。但是我希望页面不超过一定的字符数限制,但是一旦接近尾声,它就会占用太多项目并将它们无缘无故地推到最后。

代码在这里和hastebin

module.exports = {
stringsToPages: (strings) =>{
// below is just a display of what is passed - not actually in my code.
var strings = ["1 Received a ban","2 Had a ban removed","3 Received a ban","4 Had a ban removed","5 Received a ban","6 Had a ban removed","7 Received a ban","8 Had a ban removed","9 Received a ban","10 Had a ban removed","11 Received a ban","12 Had a ban removed","13 Received a ban"]

let pages = []; // Initate pages array to return
var limit = 50; // Character limit

let it = 0; // Run iteration
let tot = 0; // Total string length
let setlen = 0; // Length of the set to cut into a new page.
var clone = strings.slice(0); // Clone array

strings.forEach(i => {
it++;

let len = tot+i.length+2; // Getting Size & adding two for "\n"
if(len >= limit){
pages.push(clone.splice(0,setlen).join(`\n`));
tot = 0;
setlen = 0;
} else {
tot = tot+i.length;
setlen++;
}

// If on last iteration, check and see if the clone array has more items, if so join and push them.
if(it === strings.length){
if(clone.length > 0){
pages.push(clone.join(`\n`));
}
}
});


return pages; // below is what is returned - not actually in my code.
var result = ["1 Received a ban\n2 Had a ban removed","3 Received a ban\n4 Had a ban removed","5 Received a ban\n6 Had a ban removed","7 Received a ban\n8 Had a ban removed","9 Received a ban\n10 Had a ban removed\n11 Received a ban\n12 Had a ban removed\n13 Received a ban"]
}
}

最终结果将 13 个项目拆分为 5 个页面,第 1-4 页提供 2 个项目,第 5 页提供 5 个项目。当它应该是 7 页时,1-6 页有 2 个项目,6 页有 1 个项目。嗯,我需要它,但不应该,因为它显然不是。

最佳答案

喂,这个对你有用吗?

const stringsToPages = (strings) => {
// below is just a display of what is passed - not actually in my code.
var strings = ["1 Received a ban", "2 Had a ban removed", "3 Received a ban", "4 Had a ban removed", "5 Received a ban", "6 Had a ban removed", "7 Received a ban", "8 Had a ban removed", "9 Received a ban", "10 Had a ban removed", "11 Received a ban", "12 Had a ban removed", "13 Received a ban"]

let pages = ['']; // Initate pages array to return
let currPage = 0;
var limit = 50; // Character limit
var clone = strings.slice(0); // Clone array

clone.forEach(i => {
let curPageLen = (pages[currPage] + i).length + 2;
if (curPageLen >= limit) {
pages[++currPage] = '';
}
pages[currPage] = `${pages[currPage]}\n${i}`;
});


return pages; // below is what is returned - not actually in my code.
}

let pages = stringsToPages();
console.log(pages);
pages.forEach(p => console.log(p.length));

关于javascript - 根据行为怪异的页面的字符限制压缩的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com