陣列以JavaScript由數字索引(或至少應該是)。
persons['data'].push(bob);
persons['data'].push(fill);
persons['data'].push(mark);
使用persons[2]
會給你{名稱: '馬克',年齡:19}。
雖然JavaScript是非常靈活,你可以做在@Sasa答案,並使用您可以通過其他開發人員,如果你這樣做,因爲這是一個非常不好的做法得到kneecapped字符串索引。
[加] 考慮的奇怪和意外的行爲,這些例子:在Javascript
var ary = [];
ary[0] = false;
ary['using string indexes in javascript arrays is stupid'] = true;
console.log('pop should return the last added element', ary.pop()); // false - WTF?
console.log('lastIndexOf should be 1?', ary.lastIndexOf(true)); // -1 WTF?
陣列應作爲堆棧。想想一堆牌,你可以添加(推)或拿走牌(拉),但你不知道哪個牌在哪裏(除非你是在作弊)。
如果你想通過名稱的人員名單,你會使用一個對象來存儲人數:
persons.data = {};
persons['data']['Bob'] = bob;
或者你也可以filter陣列拿到賽謂詞其值:
bob = persons.data.filter(function(person){
return person["name"] === 'Bob';
})[0];
編輯:
Example一個功能,將創建或找到一個人:
var persons = { data : [] }
persons.data.push({ name: 'Bob', age: 10 })
// returns the index of the newly added person
persons.addOrReplace = function(new_person, attr) {
var attr = attr || 'name';
var data = this.data;
for (var i = 0; i < data.length; i++) {
if (data[i][attr] === new_person[attr]) {
data[i] = new_person;
return i;
}
}
return this.data.push(new_person);
}
persons.addOrReplace({ name: 'Bob', age: 11 });
console.log(persons.data.length); // 1
console.log(persons.data[0].age); // 11
persons.addOrReplace({ name: 'Joe', age: 11 });
console.log(persons.data.length); // 2
console.log(persons.data[persons.data.length -1].name); // Joe
來源
2014-11-02 14:32:37
max
如果兩個人具有相同的名稱,會發生什麼? – axelduch 2014-11-02 14:30:23
在這種情況下,我們需要更新一個存在的人(約翰)。這個數組就像一個'Set'。 – Alex 2014-11-02 14:30:55