мабуть, я не можу зрозуміти, як логіка JS працює при аналізі даних з багатовимірних масивів.
Скажімо, у нас є тривимірний масив:
var data = new Array(("1","2",("7","8","9")),("3","4",("10","11","12")),("5","6",("13","14","15")));
і я маю просту структуру HTML, щоб почати, як з єдиним div з ідентифікатором = parentdiv
і я хочу додати його в DOM, щобсхоже на те, що кожен параметр знаходиться в іншому дивізіоні, але все ще є дитиною до div попереднього розміру, що закінчується чимось на кшталт: childdiv1 :( 1 2 онук дидь1.1: 7 grandchilddiv1.2: 8 онук дидь1.3: 9) childdiv2 :( 3 4 grandchilddiv2.1: 10 grandchilddiv2.2: 11 онук дидь2.3: 12) childdiv3 :( 5 6 внук див3.1: 13 внук див3.2: 14 онук3д.3: 15) закінчуючи друк просто 1 2 7 8 9 3 4 10 11 12 5 6 13 14 15
налаштування скрипки, щоб перевірити, як працює цикл .. http://jsfiddle.net/M_Elf/68zfgdaq/1/ Використовуючи $ кожен, а не для курсу, не існуєзмінити що-небудь що я помітив, що кожен цикл діє як незалежно від його батьківських циклів ... Ніколи не бачили прикладів розбору даних з більш ніж 2 розмірів і цикл в циклі не працює, як я передбачав ... Будь-які пропозиції?
вирішується з рекурсійним способом мислення
Відповіді:
1 для відповіді № 1Я не думаю, що ти використовуєш Array()
конструктор належним чином. Це трохи нестандартно, щоб використовувати цей конструктор, а не просто var arr = [1, 2, 3];
Проблема в тому, що Array()
Конструктор очікує, що кожен аргумент є єдинимцінність або об'єкт; замість цього ви намагаєтеся прогодувати його багатовимірними масивами, але ви не правильно будуєте ці внутрішні масиви! Ймовірно, це виглядає приблизно так:
var data = new Array(new Array(1, 2, 3), new Array(4, 5, 6), new Array(7, 8, 9));
Простий і більш інтуїтивний спосіб зробити це було б просто оголосити масив таким:
var data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Це полегшує побачити, як гніздяться масиви, і яка багатомірна структура.