Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2012, 17:01
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Как создать двумерный массив с помощью циклов.
Вот текст:
а="Мама мыла раму.Сын пошёл учиться.Щенок весело гавкал."
Как создать двумерный массив с помощью циклов.Разделители,сначала-точка,затем-пробел.
Должно получиться:
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>');}
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2012, 00:42
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

dima***,
Ты понимаешь что в любом случае получишь объект? В js нет двумерных массивов.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2012, 09:52
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Понятно.А как сделать-то?
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2012, 12:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от 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>
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2012, 12:36
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Рони-спасибо огромное!!!
Целый месяц бился.Что-то похожее делал,но в Adobe Dreamweawer не получалось.Сейчас буду разбираться,где ошибка была.
Ответить с цитированием
  #6 (permalink)  
Старый 14.12.2012, 13:58
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Рони,первый раз вижу такую констукцию.Везде пишут for(i=0;i=a.length;i++){for(j=0;j=a.length;j++)}}, т.е. подряд 2 цикла идут.А где можно посмотреть похожий пример не подскажешь?
Ещё раз огромное спасибо.
Ответить с цитированием
  #7 (permalink)  
Старый 14.12.2012, 14:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от dima***
for(i=0;i=a.length;i++){for(j=0;j=a.length;j++){}}
эта кострукция мало отличается от примера выше ... разве что без фигурной скобки она нерабочая
Ответить с цитированием
  #8 (permalink)  
Старый 14.12.2012, 14:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

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)
Ответить с цитированием
  #9 (permalink)  
Старый 14.12.2012, 15:15
Профессор
Отправить личное сообщение для dima*** Посмотреть профиль Найти все сообщения от dima***
 
Регистрация: 13.12.2012
Сообщений: 283

Да,отлично,спасибо!Ещё лучше стало!
Разобрался почему не получалось.
b[i] = b[i].split(reg)-вот до этой строки не додумался.
Ответить с цитированием
  #10 (permalink)  
Старый 15.12.2012, 02:07
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Или так:

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

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

alert(result);



Сообщение от рони
b = a.match(pat);
match может вернуть null (не в конретном случае, конечно)

Последний раз редактировалось monolithed, 15.12.2012 в 02:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите код как создать эффект... lopraeph Элементы интерфейса 1 09.06.2011 20:18
Очистить двумерный массив vah-smile Элементы интерфейса 7 30.03.2011 15:26
Если селектор возвращает массив узлов, как работать с каждым по отдельности? балерун jQuery 7 15.02.2011 12:42
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 18:57
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15