push и unshift в многомерных массивах - найди косяк в 10 строчках

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Аватара пользователя
__Yuri__
Сообщения: 139
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

18 дек 2015, 13:29

Всем привет!

Для любителей сломать себе мозг - сохраните нижеследующее в файл *.hta и запустите. По-моему, забавный косяк. Буду благодарен за идею, как исправить.

<html>

<head>
<title>Untitled</title>
</head>

<body>
Fucked Push changes all new rows!

<script>
var arr1 = [[10,1,2],[11,4,5],[12,7,8]];
var oneLASrow = new Array;

while (arr1[arr1.length-1][0] < 20)
{
oneLASrow[0] = arr1[arr1.length-1][0] + 1;
for(var i=1; i < arr1[0].length; i++)
{
oneLASrow = -1;
}
arr1.push(oneLASrow);
alert (arr1[0]+ "\n" + arr1[1] + "\n" + arr1[2] + "\n" + arr1[3]+ "\n" + arr1[4] + "\n" + arr1[5] + "\n" + arr1[6]);
}
</script>


</body>

</html>
Аватара пользователя
__Yuri__
Сообщения: 139
Зарегистрирован: 02 ноя 2006, 17:17
Контактная информация:

18 дек 2015, 14:44

упростил дальше некуда - таже фигня... Значит дело не в push и даже не в length...

<!DOCTYPE HTML>

<html>

<head>
<title>Untitled</title>
</head>

<body>
affFGGGGG

<script>
var arr1 = [[22,1,2],[33,4,5],[44,7,8]];
var oneLASrow = [13,-1,-1];
var g = arr1.length;
oneLASrow[0] = 55;

arr1[g] = oneLASrow;
alert(g +" " + arr1[g][0]);
g=g+1;

oneLASrow[0] = arr1[g-1][0] + 1;
arr1[g] = oneLASrow;
alert(g +" " + arr1[g][0]);
g+=1;
oneLASrow[0] = arr1[g-1][0] + 1;
arr1[g] = oneLASrow;
alert(g +" " + arr1[g][0]);
alert (arr1[0]+ "\n" + arr1[1] + "\n" + arr1[2] + "\n" + arr1[3]+ "\n" + arr1[4] + "\n" + arr1[5] + "\n" + arr1[6]);

</script>


</body>

</html>
Ответить