2017-01-08 3 views
0

Я пытаюсь создать объект массива. я определил его следующим образом:Добавление к объекту Javascript

work = { 
    'jobs': [{ 
     'employer': 'ABC', 
     'jobPosition': 'FrontEndEngineer', 
     'experience': '1 year', 
     'city': 'Mumbai' 
    }] 
}; 

Поскольку это массив, который я пытаюсь добавить его к следующей позиции, как

work.jobs[1].employer="QWE"; 
work.jobs[1].jobPosition = "Web Dev Intern"; 
work.jobs[1].experience = "6 months"; 
work.jobs[1].city = "Bengaluru"; 

И утешает объект работы, появляется сообщение об ошибке:

Uncaught TypeError: Cannot set property 'employer' of undefined

Что я делаю неправильно?

+0

Я пытаюсь добавить другой объект внутри массива вместо его замены. –

+0

Вам нужно будет установить 'work.jobs [1] = {};' прежде чем вы сможете установить его свойства. –

+0

Вы должны либо 1) инициализировать новый объект с желаемыми свойствами и добавить его, либо 2) создать пустой объект, добавить его, а затем попробовать код в своем начальном сообщении. Проблема в том, что 'work.jobs [1]' не существует и поэтому 'undefined'. Вот почему вы получаете эту ошибку. –

ответ

2

попробовать с толчком:

new_job = { 
    'employer': 'QWE', 
    'jobPosition': 'Web Dev Intern', 
    'experience': '6 months', 
    'city': 'Bengaluru' 
} 

work.jobs.push(new_job) 
0

work.jobs[1] еще не существует, и в настоящее время undefined. Поэтому доступ к свойству .employer вызывает ошибку. Используйте эту функцию для инициализации work.jobs[1]:

work.jobs[1] = { 
    'employer': 'QWE', 
    ... 
}; 

или,

work.jobs.push({ 
    'employer': 'QWE', 
    ... 
}); 

var work = { 
 
    'jobs': [{ 
 
    'employer': 'ABC', 
 
    'jobPosition': 'FrontEndEngineer', 
 
    'experience': '1 year', 
 
    'city': 'Mumbai' 
 
    }] 
 
}; 
 

 

 
work.jobs.push({ 
 
    'employer': 'QWE', 
 
    'jobPosition': 'Web Dev Intern', 
 
    'experience': '6 months', 
 
    'city': 'Bengaluru' 
 
}); 
 

 
console.log(work);

0

Вы можете использовать метод Array.prototype.push. Это позволяет вам нажимать весь определенный объект вместо добавления путем глубокой ссылки.

let work = { 
    'jobs': [{ 
     'employer': 'ABC', 
     'jobPosition': 'FrontEndEngineer', 
     'experience': '1 year', 
     'city': 'Mumbai' 
    }] 
}; 

const job = { 
    'employer': 'QWE', 
    'jobPosition': 'Web Dev Intern', 
    'experience': '6 months', 
    'city': 'Bengaluru' 
}; 

work.jobs.push(job); 

console.log(work); 
// jobs: Array 
// 0: {employer: "ABC", jobPosition: "FrontEndEngineer", experience: "1 year", city: "Mumbai"} 
// 1: {employer: "QWE", jobPosition: "Web Dev Intern", experience: "6 months", city: "Bengaluru"} 
Смежные вопросы