Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2012, 20:47
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Поиск необходимого текста через id
Всем привет!
При написании скрипта столкнулся с проблемой.
Суть заключается в следующем.

Есть код (пример):
[ID|text1|text2|text3|text4][ID|text1|text2|text3|text4]

Описание:
ID - уникальный номер для каждого набора элементов.
text1, text2, te... - любой уже существующий текст.

Необходимо, осуществить проверку на существование такого "id" (номера).
Если существует - записать в массив элементы данного ID.

Пожалуйста, помогите реализовать или же подскажите как можно сделать.
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2012, 21:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var obj = {
    "20": ["text1", "text2", "text3"],
    "50": ["text1", "text2", "text3"]
}

if ( obj[20] ) {
    alert( "is exists: " + obj[20].join("\n") );
    // obj[20] - и есть массив значений по этому ID
}

if ( obj[25] ) {
    alert( "is exists" );
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2012, 21:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

devote,
Хм - а я интерпретировал этот вопрос так:
Сообщение от Dorian_bs
Есть код (пример):
[ID|text1|text2|text3|text4][ID|text1|text2|text3|text4]


<div id="ID2"></div>
<script type="text/javascript">
var Idarr='[ID1|text1|text2|text3|text4][ID2|text1|text2|text3|text4]'
Idarr=Idarr.split(/^\[|\]\[|\]$/g);
var ll=Idarr.length;Idarr.splice(ll-1,1);Idarr.splice(0,1);

for(i in Idarr) {
  Idarr[i]=Idarr[i].split("|");
  if(document.getElementById(Idarr[i][0])!=null){
    alert('Нашли')
     //Тут чо то делаем - я не понял
  }
}
alert('End')
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 18.06.2012, 21:49
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

спасибо! Но как реализовать создание самого этого массива. То есть код изначально находится в переменной.
var a = '[ID|text1|text2|text3|text4][ID|text1|text2|text3|text4]';
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2012, 21:51
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

большое спасибо Вам!
Deff, то, что нужно!)
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2012, 21:56
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

deff, как только оно находит такой id - записывает значение в массив текст1, текст2...

Последний раз редактировалось Dorian_bs, 18.06.2012 в 22:01.
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2012, 22:21
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Dorian_bs
записывает значение в массив текст1, текст2...
В Новый массив ? или ?
И как он привязан к элементу ?
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2012, 22:38
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

то есть мы создаем новый массив, в который записываем 4 элемента.
1 - 'text1',
2 - 'text2',
3 - 'text3',
4 - 'text4'
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2012, 22:45
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var s = '[ID1|text1|text2|text3|text4][ID2|text1|text2|text3|text4]';

var blocks = s.replace(/^\[|\]$/g, "").split("]["),
    block, result = {};

for( var i = 0, length = blocks.length; i < length; i++ ) {
    result[ (block = blocks[ i ].split("|")).shift() ] = block;
}

alert( JSON.stringify( result ) );  // {"ID1":["text1","text2","text3","text4"],"ID2":["text1","text2","text3","text4"]}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2012, 22:57
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

большое спасибо))) в точку)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста на web странице средствами JS ацкий Общие вопросы Javascript 5 04.02.2012 13:34
отправка текста через адресную строку Изучаю_JS Общие вопросы Javascript 29 11.01.2012 18:47
Живой поиск. Не работает при вставке текста мышкой formus Общие вопросы Javascript 4 13.06.2011 22:50
Поиск текста в блоке со скроллингом lukingnu Элементы интерфейса 0 05.08.2010 22:54
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31