2017-01-08 91 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"}