Member 13023154 Ответов: 2

Может ли кто-нибудь объяснить мне этот JS-код?


var a1 = [[0,1],[0,1],[1,1]],
    a2 = [[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]],
   res = a2.map((s,i) => s.map((n,j) => a1[i][j] !== void 0 ? a1[i][j] : n));

Предполагается, что код накладывает a1 на a2, но как именно он это делает?
Каковы переменные s, i, j и n?
Код взят из ответа на этот вопрос: Как наложить 2D массив поверх другого в JavaScript-Quora[^]

Что я уже пробовал:

Я попытался ввести код в jsfiddle где он находит некоторые ошибки, но, кажется, работает.

2 Ответов

Рейтинг:
2

Peter Leow

Чтобы добавить к решению 1, это

res = a2.map((s,i) => s.map((n,j) => a1[i][j] !== void 0 ? a1[i][j] : n));
так же, как это:
res=a2.map(function(s,i){

	return s.map(function(n,j){

		if (a1[i][j] !== void 0){
			return a1[i][j];
		} else {
			return n;
		}
	
    })

})
в "нормальном" JavaScript. Изучите работу Метод JavaScript Array map() [^]


Maciej Los

5ед!

Peter Leow

Спасибо, Мацей.

Рейтинг:
1

Maciej Los

5ед!