我正在處理一個角度專案。我有一個像下面這樣的字串,我使用正則運算式整理了所有特殊字符。現在,我希望前 2 個字串在 suare 括號中,后兩個字串在另一個方括號中,如坐標,輸出應如下所示。請幫我實作功能。
test: any = "((-1.23568 75.87956), (-1.75682 22.87694))"
我的 ts 代碼是這樣的:
hello()
{
this.new = ( this.test.replace(/[^\d. -]/g, ''));
this.newarr = this.new.split(" ");
const result = this.newarr.filter(e => e);
}
我在結果陣列中的最終輸出是這樣的:
["-1.23568", "75.87956", "-1.75682", "22.87694"]
期望輸出
[ ["-1.23568", "75.87956"], ["-1.75682", "22.87694"] ]
uj5u.com熱心網友回復:
例如,您可以使用Array.prototype.splice()。這個函式可以為你的新陣列提供這樣的“部分”:
pairs.push(initialArr.splice(0, 2))
突出回圈遍歷您的初始陣列initialArr.length/2時間。
作業演示
編輯:或者你可以更新你的替換邏輯,不僅得到一個接一個的數字,而且得到成對(例如'-1.23568 75.87956,-1.75682 22.87694'),然后將它拆分兩次。
split(',') --> ['-1.23568 75.87956', '-1.75682 22.87694']
然后回圈和
split(' ')
uj5u.com熱心網友回復:
您可以避免一些復雜的正則運算式邏輯,并且一旦您擁有:
const [a1, a2, b1, b2] = ["-1.23568", "75.87956", "-1.75682", "22.87694"]
const result = [[a1, a2], [b1, b2]]
或者如果有超過兩對:
const array = ["-1.23568", "75.87956", "-1.75682", "22.87694", "-1.33343", "3.34432"]
const result = [];
for(let i = 0; i < array.length; i =2) {
result.push(array.slice(i, i 2))
}
uj5u.com熱心網友回復:
另一種方法是使用String.match()以獲得各組坐標,然后Array.map()和String.split()分成對。
let test = "((-1.23568 75.87956), (-1.75682 22.87694))";
const result = test.match(/[\d.-] \s[\d.-] /g).map(s => s.split(/\s/));
console.log('Result:', result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349971.html
標籤:javascript 数组 细绳 打字稿
