0

Мне нужна ваша помощь,Хранение и получение данных в массивах

Для начала, я получаю сообщение об ошибке с настройкой моего массива, как показано ниже. Каким будет метод надлежащего способа, а затем восстановить его данные следующим образом?

var office_a = {  
    name: [{ 
     name: "Alpha Branch", mailstop: "AB" 
    }],  
    divisions: [{ 
     division1: "Division 1 Office Name", mailstop: "DIV1", 
     division2: "Division 2 Office Name", mailstop: "DIV2", 
     division3: "Division 3 Office Name", mailstop: "DIV3" 
    }]  
}; 

function test() {  
    alert(office_a[name].name); // -> "Alpha Branch"  
    alert(office_a[name].mailstop); // -> "B1"  
    alert(office_a[divisions][division1.name]); // -> "Division 1 Office Name"  
    alert(office_a[divisions][division1.mailstop]); // -> "DIV1" 
} 

test(); 
+0

первую очередь, вам нужно написать: 'вар office_a = {...}' 'отсутствующий в =' и ';' оператор. Затем вам нужно написать ',' после каждого из ваших разделов. Синтаксические ошибки ... Я упоминал ';' после каждого предупреждения? – AGE

+1

Вам необходимо ознакомиться с основами доступа к объектам JavaScript. 'office_a [name]' ссылается на ** свойство, имя которого хранится в переменной 'name' **. Чтобы ссылаться на свойство 'name', вам нужно либо' office_a.name', либо 'office_a ['name']'. Это будет рассмотрено в любом базовом руководстве JS. –

ответ

1

попробуйте эти (в основном вам необходимо учитывать индексы массивов внутри ассоциативного массива). проверить эту fiddle

var office_a = {  
    name: [{ 
     name: "Alpha Branch", mailstop: "AB" 
    }],  
    divisions: [{ 
     division1: "Division 1 Office Name", mailstop: "DIV1", 
     division2: "Division 2 Office Name", mailstop: "DIV2", 
     division3: "Division 3 Office Name", mailstop: "DIV3" 
    }]  
}; 
function test() { 
console.log(office_a.name[0].name); 
console.log(office_a.name[0].mailstop); 
console.log(office_a.divisions[0].division1); 
console.log(office_a.divisions[0].mailstop); 
} 
test(); 
+1

Как это могло бы работать, если переменная 'name' не определена? Как это может быть принятый ответ, если он не работает? Кстати, в JS мы не называем их «ассоциативными массивами». –

+0

@torazaburo внесла изменения в код, спасибо за указание. – gurvinder372

+0

@torazaburo Я думал то же самое, но, к счастью, есть такая вещь, как кнопка «Редактировать» – AGE

1

Я думал, что я мог бы развить эту тему. Если вы выполните следующие действия:

console.log(office_a); 

Вы сможете увидеть следующий результат на вашем веб-инспектора (я использую Chrome). Я только напечатаю здесь соответствующую информацию, чтобы достичь того, чего вы намереваетесь достичь.

Object {name: Array[1], divisions: Array[1]} 
    divisions: Array[1] 
     0: Object 
      division1: "Division 1 Office Name" 
      division2: "Division 2 Office Name" 
      division3: "Division 3 Office Name" 
      mailstop: "DIV3" 
    name: Array[1] 
     0: Object 
      mailstop: "AB" 
      name: "Alpha Branch" 

Посмотрев на это, вы можете получить очень четкое представление о том, как браузер интерпретирует ваш объект. Какой первый приводит к использованию JavaScript Literal Notation для того, чтобы получить доступ к его содержимому, как через objectName.propertyName:

console.log(office_a.name); 
console.log(office_a.divisions); 

Это будет производить массивы видели выше:

divisions 
    0: Object 
     division1: "Division 1 Office Name" 
     division2: "Division 2 Office Name" 
     division3: "Division 3 Office Name" 
     mailstop: "DIV3" 
name 
    0: Object 
     mailstop: "AB" 
     name: "Alpha Branch" 

Отсюда вы можете получить доступ к каждому отдельный объекту, содержимое, которое в вашем случае представляет собой массив, содержащий объект.

console.log(office_a.name[0]); 
console.log(office_a.divisions[0]); 

Как я уже показал, доступ к конкретному содержимому объекта так же просто, как использование желаемого свойства внутри этого объекта. В вашем случае, вы хотите, чтобы увидеть все содержимое, так сделайте следующее:

console.log(office_a.name[0].name); // Alpha Branch 
console.log(office_a.name[0].mailstop); // B1 
console.log(office_a.divisions[0].division1); // Division 1 Office Name 
console.log(office_a.divisions[0].mailstop); // DIV1 

TL; DR

что приводит к следующему результату (обратите внимание, я изменил test() функцию):

var office_a = { 
 
    name: [{ 
 
    name: "Alpha Branch", 
 
    mailstop: "AB" 
 
    }], 
 
    divisions: [{ 
 
    division1: "Division 1 Office Name", 
 
    mailstop: "DIV1", 
 
    division2: "Division 2 Office Name", 
 
    mailstop: "DIV2", 
 
    division3: "Division 3 Office Name", 
 
    mailstop: "DIV3" 
 
    }] 
 
}; 
 

 
function test(myObject) { 
 
    alert(myObject.name[0].name); // Alpha Branch 
 
    alert(myObject.name[0].mailstop); // B1 
 
    alert(myObject.divisions[0].division1); // Division 1 Office Name 
 
    alert(myObject.divisions[0].mailstop); // DIV1 
 
} 
 

 
test(office_a);

Смежные вопросы