首先在body外插入乙個absolute的容器避免重繪:
const svgwidthtestcontainer = document.createelement('svg');
svgwidthtestcontainer.setattribute('id', 'svgwidthtest');
svgwidthtestcontainer.style.csstext = `
position: absolute;
width: 500px;
height: 500px;
left: -1000px;
top: -1000px;
visibility: 'hidden';
`;
export function getsvgswidth(texts) );
const textelementswidth = textelements.map(element => element.getboundingclientrect().width);
svgwidthtestcontainer.removechild(textsfragment);
return textelementswidth;
}// 得到1-1000000數字在螢幕上的寬度
console.log(getsvgswidth([...array(100000).keys()]));
// 準備好text
const textelementtest = document.createelement('text');
export function getsvgswidthwithonetext(texts) );
return textelementswidth;
}
// 可以做乙個效能測試,我這邊算出來他倆一直保持著5倍左右的差距
const datestart = new date().gettime();
console.log(getsvgswidth([...array(100000).keys()]));
console.log(getsvgswidthwithonetext([...array(100000).keys()]));
console.log(new date().gettime() - datestart);
關於js計算非等寬字型寬度的方法
首先在body外插入乙個absolute的容器避免重繪 const svgwidthtestcontainer document.createelement svg svgwidthtestcontainer.setattribute id svgwidthtest svgwidthtestcont...
js正則貪婪模式 JS關於正則的非貪婪模式
首先正則是很複雜,很巧妙的。你舉的這個例子說明貪婪模式和非貪婪模式是不對的。啥是貪婪模式,和非貪婪模式?貪婪模式,就是 貪得無厭 有了還要,有多少要多少,指導沒有 字串尾 非貪婪模式,恰好相反,匹配了就不要了,就得到結果。我先舉乙個例子來說明,貪婪模式和非貪婪模式,只在你的基礎上稍稍改動,為了後面對...
js中關於 如何進行計算
首先js是弱型別語言,所以導致js的隱式型別轉換頻繁。js裡隱式轉換的規則為 如果其中有乙個運算元為string,則將另乙個運算元隱式的轉換為string,然後進行字串拼接得出結果。如果運算元為物件 或者是陣列 這種複雜的資料型別,那麼就將兩個運算元都轉換為字串,進行拼接 進行字串轉換得到結果為 s...