Какой лучший способ сохранить массив key = > value
в javascript, и как это можно обойти?
Ключ каждого элемента должен быть тегом, таким как {id}
или просто id
, а значение должно быть числовым значением id.
Он должен быть либо элементом существующего класса javascript, либо глобальной переменной, на которую можно легко ссылаться через класс.
jQuery можно использовать.
Вот что такое объект JavaScript:
var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
myArray.id3 = 400;
myArray["id4"] = 500;
Вы можете пройти через это, используя for..in
loop:
for (var key in myArray) {
console.log("key " + key + " has value " + myArray[key]);
}
См. Также: Работа с объектами (MDN).
В ECMAScript6 также есть Map
(см. Таблицу совместимости браузера там):
- Объект имеет прототип, поэтому на карте есть ключи по умолчанию. Это можно обойти, используя map = Object.create (null) начиная с ES5, но это редко делается.
- Ключами объекта являются струны и символы, где они могут быть любым значением для карты.
- Вы можете легко получить размер карты, при этом вам нужно вручную отслеживать размер объекта.
Вы можете использовать Карта .
- Новая структура данных введена в JavaScript ES6.
- Альтернатива JavaScript Object для хранения пар ключ / значение.
- Имеет полезные методы для итерации пар ключ / значение.
var map = new Map();
map.set('name', 'John');
map.set('id', 11);
// Get the full content of the Map
console.log(map); // Map { 'name' => 'John', 'id' => 11 }
Получить ценность карты с помощью ключа
console.log(map.get('name')); // John
console.log(map.get('id')); // 11
Получить размер карты
console.log(map.size); // 2
Контрольный ключ существует на карте
console.log(map.has('name')); // true
console.log(map.has('age')); // false
Получить ключи
console.log(map.keys()); // MapIterator { 'name', 'id' }
Получить ценности
console.log(map.values()); // MapIterator { 'John', 11 }
Получить элементы карты
for (let element of map) {
console.log(element);
}
// Output:
// [ 'name', 'John' ]
// [ 'id', 11 ]
Распечатать пары значений ключей
for (let [key, value] of map) {
console.log(key + " - " + value);
}
// Output:
// name - John
// id - 11
Печатайте только ключи карты
for (let key of map.keys()) {
console.log(key);
}
// Output:
// name
// id
Печатайте только значения карты
for (let value of map.values()) {
console.log(value);
}
// Output:
// John
// 11
В javascript массив ключевых значений сохраняется как объект. В javascript есть такие вещи, как массивы, но они также несколько считаются объектами, проверьте этот ответ парней - https://stackoverflow.com/questions/874205/what-is-the-difference-bet-an-array- and-an-object#answer-874237
Массивы обычно отображаются с использованием синтаксиса квадратных скобок, а объекты (массивы "key = > value") - с использованием синтаксиса фигурных скобок, хотя вы можете получить доступ и установить свойства объекта, используя синтаксис квадратных скобок, как показал Алексей Романов.
Массивы в javascript обычно используются только с числовыми автоматически увеличенными клавишами, но объекты javascript могут содержать именованные пары значений клавиш, функции и даже другие объекты.
Простой массив, например.
$(document).ready(function(){
var countries = ['Canada','Us','France','Italy'];
console.log('I am from '+countries[0]);
$.each(countries, function(key, value) {
console.log(key, value);
});
});
Выход -
0 "Канада"
1 "Мы"
2 "Франция"
3 "Италия"
Выше мы видим, что мы можем округлять числовой массив с помощью функции jQuery.each и получать доступ к информации за пределами цикла, используя квадратные скобки с числовыми клавишами.
Простой объект (Джсон)
$(document).ready(function(){
var person = {
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
},
}
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation);
$.each(person, function(key, value) {
console.log(key, value);
});
});
Выход -
Меня зовут Джеймс, и я программист 6 футов 1
имя Джеймс
профессиональный программист
высота объекта {фут: 6, дюймов: 1}
На таком языке, как php, это будет считаться многомерным массивом с парами значений ключей или массивом внутри массива. Я предполагаю, что, поскольку вы спросили о том, как пройти через массив ключевых значений, вы хотели бы знать, как получить объект (клавишный = > массив значений), такой как объект человека выше, чтобы иметь, скажем, более одного человека.
Что ж, теперь, когда мы знаем, что массивы javascript обычно используются для числовой индексации, а объекты более гибко для ассоциативной индексации, мы будем использовать их вместе, чтобы создать массив объектов, через которые мы можем циклически переходить, например, так
JSON массив (массив объектов) -
$(document).ready(function(){
var people = [
{
name: "James",
occupation: "programmer",
height: {
feet: 6,
inches: 1
}
}, {
name: "Peter",
occupation: "designer",
height: {
feet: 4,
inches: 10
}
}, {
name: "Joshua",
occupation: "CEO",
height: {
feet: 5,
inches: 11
}
}
];
console.log("My name is "+people[2].name+" and I am a "+people[2].height.feet+" ft "+people[2].height.inches+" "+people[2].occupation+"\n");
$.each(people, function(key, person) {
console.log("My name is "+person.name+" and I am a "+person.height.feet+" ft "+person.height.inches+" "+person.occupation+"\n");
});
});
Выход -
Меня зовут Джошуа, и я 5-футовый генеральный директор
Меня зовут Джеймс, и я программист 6 футов 1
Меня зовут Питер, и я дизайнер 4 футов 10
Меня зовут Джошуа, и я 5-футовый генеральный директор
Обратите внимание, что вне цикла я должен использовать синтаксис квадратной скобки с числовым ключом, потому что теперь это числовой индексированный массив объектов, и, конечно, внутри цикла подразумевается числовой ключ.
Просто сделай это
var key = "keyOne";
var obj = {};
obj[key] = someValue;
Я знаю, что уже поздно, но это может быть полезно для тех, кто хочет других путей. Другой способ сохранения ключей массива = > значения - использование метода массива map (); (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) вы также можете использовать функцию стрелки < br / > & Лт; pre > & Лт; код > var страны = ['Канада', 'Мы', 'Франция', 'Италия']; & Лт; br / > // Функция стрелки < br / > countries.map (значение, ключ) = > ключ + ':' + значение); & Лт; br / > // Анономная функция < br / > countries.map (функция (значение, ключ) {< br / > обратный ключ + ":" + значение; < br / > }); & Лт; br / > < / code > < / pre >
Сегодня мы выпустили наш новый пакет под названием laravel-blade-javascript. Он предоставляет вам директиву javascript Blade для экспорта переменных PHP в JavaScript. Таким образом, он в основном делает то же самое, что и популярный пакет PHP-Vars-To-Js-Transformer Джеффри Уэя, но вместо экспорта переменных в контроллере наш пакет делает это представление.
Вот пример того, как его можно использовать:
@javascript («ключ», «значение»)
Полученный вид выведет:
< script type = "text / javascript" > window ['key'] = 'value'; < / script >
Таким образом, в вашем браузере теперь у вас есть доступ к ключевой переменной:
consol.log (ключ); // выводит «значение»
Вы также можете использовать один аргумент:
@javascript (['key' = > 'значение'])
Который будет выводить так же, как первый пример.
Вы также можете использовать файл конфигурации для настройки пространства имен, в котором должны находиться все экспортированные переменные JavaScript.