Создание массива от Window.location.hash

я пытаюсь создать массив из window.location.hash переменной, но я перестал работать.

Мой код:

        $.each(window.location.hash.replace("#", "").split("&"), function (i, value) {
            value = value.split("=");

            var my_item = {value[0] : value[1]};
            form_data[i] = my_item; 
        });
        console.log(form_data);

Спасибо.

5
задан mTuran 13 July 2010 в 04:06
поделиться

3 ответа

Вот пример, основанный на следующем URL:

http://www.someUrl.com/Index.htm#foo=bob&moo=alice

<!DOCTYPE html>
<html lang="en">
<head>
    <title>hash me long time</title>
</head>
<body>

    <p>Hello World!</p>

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">

        $(function () {

            var hash = window.location.hash.replace('#', '').split('&');
            var myArray = new Array();
            for (var x = 0; x < hash.length; x++) {
                var itemArray = hash[x].split('=');
                var item = new Object();
                item.key = itemArray[0];
                item.value = itemArray[1];
                myArray.push(item);
            }

            for (var x = 0; x < myArray.length; x++)
                console.log(myArray[x].key + ' is ' + myArray[x].value);

        });

    </script>
</body>
</html>
0
ответ дан 14 December 2019 в 01:00
поделиться

Undeclared form_data не является объектом, поэтому у него не может быть свойств, поэтому form_data[i] = ... будет неудачным. Запустите этот сценарий в приличном браузере, и консоль должна показать вам сообщение, равное тому, что я только что сказал.

edit - нет, не выдаст, потому что синтаксис поддельного литерала объекта сработает первым, как упоминает Kobi. Обе проблемы должны быть исправлены.

0
ответ дан 14 December 2019 в 01:00
поделиться

JavaScript не поддерживает следующую нотацию:

var my_item = {value[0] : value[1]};

Попробуйте вместо этого:

var my_item = {};
my_item[value[0]] = value[1];

Это создаст массив, в котором каждый элемент имеет ключ и значение, например:

[{name: jason}, {age: 23}, {location: pacific}] //array of single keys

Использование хеша, вероятно, сделает больше сцены в вашем случае, поэтому вы можете вызвать form_data ['age'] , и вам не придется смотреть в массив:

initialize form_data к объекту:

form_data = {};

Добавить ключи непосредственно к нему:

form_data[value[0]] = value[1];

Итак, результат:

{name: jason, age: 23, location: pacific} //associative array with properties
2
ответ дан 14 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: