Я пытаюсь прочитать код, написанный на ruby.Я знаком с JavaScript и хотел бы понять, что код переводит в javascript.
Вот код:
def two_d_translate(arr)
new_arr = []
arr.each do |subArray|
ele = subArray[0]
num = subArray[1]
num.times { new_arr << ele }
end
return new_arr
end
Целью кода является перевод двумерногомассив в одномерный массив путем печати строки столько раз, сколько число рядом с ней, которое является вторым элементом в каждом подмассиве.
Я использовал это, чтобы попытаться подражать ему, но мне интересно, есть личто-то еще, что может быть лучше.
function two_d_translate(arr) {
let newArr = '';
let array = [];
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j += 2) {
let ele = arr[i][j];
let num = arr[i][j+1];
if (num === 0){
continue;
}
array[i] = Array(num).fill(ele);
}
}
newArr = array.toString().split(',');
return newArr;
}
Кажется, это круто для этого тестового образца.
arr_1 = [
['boot', 3],
['camp', 2],
['program', 0]
]
console.log(two_d_translate(arr_1));
Это приведет к ожидаемому результату
[ 'boot', 'boot', 'boot', 'camp', 'camp' ]
, но не будет в этом случае
arr_1=[
['boot', 3],
['camp', 0],
['program', 2]
]
это приведет к нежелательному результату, который
[ 'boot', 'boot', 'boot', '', 'program', 'program' ]