2017-02-14 79 views
0

我試圖創建一個將某些值插入到對象中的腳本。將值插入循環中的對象

我基本上要通過一系列的對象會是這個樣子的,結束了 -

myObj.data.person[0].name = 'name 1'; 
myObj.data.person[1].name = 'name 2'; 
myObj.data.person[2].name = 'name 3'; 

這裏是我的對象,它包含對象的數組。

var addressBook = { 
    data: [ 
    person = { 
     name: '', 
     address: '' 
    } 
    ] 
} 

和for循環插入重複信息。

for (i=0; i < 10; i++) 
    { 
    myObj.data.person[i] = {name: 'Joe Bloggs', address: 'Main Street'}; 
    console.log(myObj.data.person.name); 
    } 

每當我運行此代碼我碰到下面的錯誤 -

Uncaught TypeError: Cannot set property 'person' of undefined at <anonymous>:14:24 

所以,問題是我在哪裏去了?此外,這會被認爲是創建一個對象列表(例如第1個人,第2個人等)的正確方法嗎?我最終想着如何創建類似Person構造函數的東西,並使用循環來創建多個Person對象)。

感謝,

+0

您需要正確地宣佈你的'myObj'財產, – Tom

+0

聲明你的對象作爲'addressBook',但後來嘗試訪問它作爲'myObj'? – Connum

+0

'data:[person = ...]'是無稽之談。如果'data'是一個數組,那麼你也不能'data.person [']''。你可能只需要'data:[{name ...}]',並操作'data [i]'。 – deceze

回答

1

請試着改變你的對象的符號在下列方式

var addressBook = { 
    data: [{ 
     name: '', 
     address: '' 
    }, 
    { 
     name: 'Roshan', 
     address: '' 
    }, 
    { 
     name: 'Roshan1', 
     address: '' 
    } 
    ] 
} 
+0

這是*一半*答案... – deceze

+0

Iam編輯我的答案將完成答案 –

+0

感謝Isetty和Deceze。這是正確的解決方案。 –

0

試試這個:

myObj.data[i].person = 'John'; 
myObj.data[i].address = 'NYC'; 
0

看到這個答案的增編isetty ravitejakumarAnswer

你應該考慮寫一個原型/ class爲你的用例。 在這種情況下,您可以更好地跟蹤數據。

也許是這樣的:

var AddressBook = {}, 
    Person = {}; 

(function() { 
    AddressBook.prototype = { 
     data: [], 
     add: function(person) { 
      this.data.push(person); 
     } 
    }; 
    Person = function(name, address) { 
     this.name = name; 
     this.address = address; 
    } 
    Person.prototype = { 
     name, 
     address 
    }; 
})(); 
+0

謝謝jayjay - 這也是非常有用的知道。除了我在原始問題中提到的問題之外 - 這正是我最終試圖建立的。乾杯。 –

+0

@JonK不客氣。 –