我已經在JavaScript中解決了以下測驗,並在下面附加了測驗和我的解決方案。 我不覺得正確解決問題,因爲我知道我錯過了如何調用功能! 任何人都可以幫助我更簡單的方式使用調用函數的方法重寫代碼?或者任何一種最簡單的方式都歡迎!測驗:轉換爲二進制數字,用JavaScript重疊數組
測驗:
鑑於三個輸入:兩個陣列與包含的十進制數和它們的長度的數目相同的長度, 轉換在兩個陣列的數字爲二進制數,像這樣:
01001
10100
11100
10010
01011
11110
00001
10101
10001
11100
然後,通過重疊在彼此之上,使得具有從每個陣列1S一個新的數組結合兩個陣列, (1個覆蓋0),像這樣:
11111
10101
11101
10011
11111
作爲最後的步驟中,轉換該陣列爲具有#S-和的條件下空格的格式(#= 1,空間= 0) 最後,你應該得到這作爲輸出>
[ '#####', '# # #', '### #', '# ##', '#####' ]
我的解決方案:
function solution(n, arr1, arr2) {
var convArr1 = arr1.map(function(numten) {
return numten.toString(2);
})
var convArr2 = arr2.map(function(numten) {
return numten.toString(2);
})
var newArr1 = convArr1.map(function(binNum) {
if (binNum.length != n) {
let zero = '0';
for (let i = 1; i < n - binNum.length; i++) {
zero = zero + 0;
}
binNum = zero + binNum;
return binNum;
} else {
return binNum;
}
})
var newArr2 = convArr2.map(function(biNum) {
if (biNum.length != n) {
var zero = '0';
for (let i = 1; i < n - biNum.length; i++) {
zero = zero + '0';
}
biNum = zero + biNum;
return biNum;
} else {
return biNum;
}
})
// console.log(newArr1, newArr2);
var answer = ["", "", "", "", ""];
var element = "";
function compare(a, b) {
for (var i = 0; i < a.length; i++) {
if (a[i] === '1' || b[i] === '1') {
answer[i] = answer[i] + '#';
} else {
answer[i] = answer[i] + ' ';
}
}
}
var compareArr = [];
for (var i = 0; i < n; i++) {
var numInArr1 = newArr1[i];
var numInArr2 = newArr2[i];
compare(numInArr1, numInArr2);
}
return answer;
}
console.log(solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28]));
爲了簡單起見,我提高了您的解決方案,但我鼓勵您將'function solution(){...}'完全封閉,這意味着您應該在函數內部進行字符串替換。 –
謝謝!我已更新您的建議:) – Eladian