Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Как создать двумерный массив с помощью циклов. (https://javascript.ru/forum/project/33906-kak-sozdat-dvumernyjj-massiv-s-pomoshhyu-ciklov.html)

dima*** 13.12.2012 17:01

Как создать двумерный массив с помощью циклов.
 
Вот текст:
а="Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал."
Как создать двумерный массив с помощью циклов.Разделители,сначала-точка,затем-пробел.
Должно получиться:
a=[ Мама,мыла,раму ]
[ Сын,пошёл,учиться ]
[ Щенок,весело,гавкал]

Решение есть,но нужно чтобы иполучилось b[i][j] c помощью цикла.

а="Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал.";

pat=/\./;b=a.split(pat);for(i=0;i<b.length;i++){document.w rite(b[i]+'<br>');}reg=/\s/;c=b[0].split(reg);for(i=0;i<c.length;i++){ document.write(c[i]+'<br>');}

Gozar 14.12.2012 00:42

dima***,
Ты понимаешь что в любом случае получишь объект? В js нет двумерных массивов.

dima*** 14.12.2012 09:52

Понятно.А как сделать-то?

рони 14.12.2012 12:15

Цитата:

Сообщение от dima***
Понятно.А как сделать-то?

Читать документацию!!!
Для медитации ...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
  <title></title>
</head>
<body>
<script>
var a = "Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал.",
    pat = /[^.]+/g,
    b = a.match(pat);
for (var i = 0; i < b.length; i++) {
    document.write(b[i] + '<br>');
    var reg = /\s/;
    b[i] = b[i].split(reg);
    for (var j = 0; j < b[i].length; j++) {
        document.write(b[i][j] + '<br>');
    }
}
a = b;
document.write(a)
</script>
</body>
</html>

dima*** 14.12.2012 12:36

Рони-спасибо огромное!!!:)
Целый месяц бился.Что-то похожее делал,но в Adobe Dreamweawer не получалось.Сейчас буду разбираться,где ошибка была.

dima*** 14.12.2012 13:58

Рони,первый раз вижу такую констукцию.Везде пишут for(i=0;i=a.length;i++){for(j=0;j=a.length;j++)}}, т.е. подряд 2 цикла идут.А где можно посмотреть похожий пример не подскажешь?
Ещё раз огромное спасибо.

рони 14.12.2012 14:26

Цитата:

Сообщение от dima***
for(i=0;i=a.length;i++){for(j=0;j=a.length;j++){}}

эта кострукция мало отличается от примера выше ... разве что без фигурной скобки она нерабочая

рони 14.12.2012 14:33

dima***,для вашего случая достаточно и одного цикла
var a = "Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал.",
    pat = /[^.]+/g,
    reg = /\s/,
    b = a.match(pat);
for (var i = 0; i < b.length; i++) {
    b[i] = b[i].split(reg);
}
a = b;
document.write(a)

dima*** 14.12.2012 15:15

Да,отлично,спасибо!Ещё лучше стало!
Разобрался почему не получалось.
b[i] = b[i].split(reg)-вот до этой строки не додумался.

monolithed 15.12.2012 02:07

Или так:

var str = "Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал.";

var result = str.split(/\./).map(function(value) {
  return value.split(/\s/);
});

alert(result);



Цитата:

Сообщение от рони
b = a.match(pat);

match может вернуть null (не в конретном случае, конечно)


Часовой пояс GMT +3, время: 11:53.