#javascript #object #javascript-objects
#javascript #объект #javascript-объекты
Вопрос:
нравится этот объект,
var myColumnDefs = [
{key:"label", sortable:true, resizeable:true},
{key:"notes", sortable:true,resizeable:true},......
Я могу вызвать object как этот метод, который он работает
...
myColumnDefs.key
...
но как вызвать этот объект с помощью Stringname, например
function myObject (string) {
return myColumnDefs.Stringname
}
alert(myObject('key'));
alert(myObject('sortable'));
спасибо за помощь
Комментарии:
1. Является ли myColumnDefs объектом или массивом объектов?
Ответ №1:
Вы должны использовать myColumnDefs[Stringname]
Вот рабочая скрипка, и в вашем случае вы должны получить элемент с помощью myColumnDefs[element_index][Stringname]
Ответ №2:
Прежде всего, я не думаю, что это сработает:
myColumnDefs.key;
Вы должны ссылаться на один из элементов в массиве:
myColumnsDefs[0].key;
Имея это в виду, вы можете ссылаться на свойство по его строковому имени, делая это:
myColumnsDefs[0]['key'];
Комментарии:
1. @cerbrus. Это была опечатка. Отвечать по телефону сложно. Я пытаюсь показать, как индексировать объект по его имени. Я думаю, что это отвечает на вопрос. Не так ли?
2. Итак, вы случайно ввели
(
вместо[
сразу после[0]
?.. Так лучше…3. Я не уверен, отвечает ли это на вопрос, поскольку вопрос расплывчатый, но, по крайней мере, код работает 🙂 -1 удалено.
4. 1 Он отвечает на вопрос, а также предоставляет информацию о неправильной индексации, поэтому идет дальше.
Ответ №3:
Есть 2 способа сделать это. Один из способов — изменить массив на объект со свойствами, где имя ключа является свойством. Другой способ — выполнить поиск по всему массиву и найти ключ с правильным именем. Я бы предложил первый способ, чтобы код выглядел следующим образом:
var keyHolder = {};
for(var i = 0; i < myColumnDefs.length; i ) {
if(!keyHolder.hasOwnProperty(myColumnDefs[i].key)) {
keyHolder[myColumnDefs[i].key = {
sortable: myColumnDefs[i].sortable,
resizeable: myColumnDefs[i].resizeable
}
}
}
Затем вы можете сделать это:
keyHolder.label
Надеюсь, это поможет.