const twoD = [
'rnbqkbnr', 'pppppppp',
'8', '8',
'4P3', '8',
'PPPP1PPP', 'RNBQKBNR'
]
我有一個看起來像這樣的二維陣列我怎樣才能用等量的字符替換每個數字:
預期輸出:
[
'rnbqkbnr', 'pppppppp',
'oooooooo', 'oooooooo',
'ooooPooo', 'oooooooo',
'PPPPoPPP', 'RNBQKBNR'
]
但是,嘗試了此代碼,卻收到此錯誤:
TypeError: Cannot assign to read only property '0' of string 'rnbqkbnr'
twoD.map((row, i) => {
row.split("").map((col, j) => {
if (isNaN(twoD[i][j])) {
twoD[i][j] = "o".repeat(twoD[i][j]);
}
});
});
uj5u.com熱心網友回復:
在您將其元素拆分為符號之前,它實際上是一個一維陣列。
const data = ['rnbqkbnr', 'pppppppp', '8', '8', '4P3', '8', 'PPPP1PPP', 'RNBQKBNR'];
const result = data.map(row => row.split('')
.map(char => isNaN(char) ? char : 'o'.repeat(char))
.join(''));
console.log(result);
.as-console-wrapper{min-height: 100%!important; top: 0}
uj5u.com熱心網友回復:
如果您要用來替換數字的字符是固定的,那么您可以使用Array.map執行以下操作:
const inputArr = [
'rnbqkbnr', 'pppppppp',
'8', '8',
'4P3', '8',
'PPPP1PPP', 'RNBQKBNR'
]; // given example input
const replChar = "o"; // character to put in place of numbers
let outputArr = inputArr.map((inputStr) => {
// passing empty string as the delimiter results in an array of characters.
let charArray = inputStr.split("");
let newChars = charArray.map((character) => {
// loop over every character and return a string
const nums = "1234567890";
if(nums.includes(character)) {
// replace numbers with n letters.
let number = parseInt(character);
return replChar.repeat(number);
}
return character;
});
return newChars.join(""); // merge into string
});
您也可以使用 for 回圈執行此操作:
const inputArr = [
'rnbqkbnr', 'pppppppp',
'8', '8',
'4P3', '8',
'PPPP1PPP', 'RNBQKBNR'
]; // given example input
const replChar = "o"; // character to put in place of numbers
let outputArr = [];
for(var i = 0; i < inputArr.length; i ) {
let inputStr = inputArr[i];
// passing empty string as the delimiter results in an array of characters.
let charArray = inputStr.split("");
let newChars = "";
for(var j = 0; j < charArray.length; j ) {
let character = charArray[j];
// loop over every character and return a string
const nums = "1234567890";
if(nums.includes(character)) {
// replace numbers with n letters.
let number = parseInt(character);
newChars = replChar.repeat(number);
} else {
newChars = character;
}
}
outputArr.push(newChars)
}
我還想提一下,在擴展這些解決方案時,可能會有改進。如果在這個問題上性能對您很重要,那么可能值得花一些時間查看以下一些帖子并可能做您自己的基準測驗:
- 在 JavaScript 中連接字串的最有效方法是什么?
- 如何使用 Javascript 處理每個文本字母?
對于您收到的錯誤,您似乎正在嘗試索引到一個字串,該字串將以只讀模式從該位置回傳字符,因為Javascript 字串是 immutable。您需要根據原始字串構建新字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443225.html
標籤:javascript 数组
