說我有一個對象數組,我希望能夠有時訪問哈希值(更改它們的值,呃?),有時會打印。JS:join() - 一個對象數組
var test = { members : [] };
test.addMember = function(name, value) {
this.members[name] = { name : name, value : value };
this.members[name].toString = function() {
return this.name + " has a " + this.value; };
};
test.toString = function() {
return this.members.join(" and ");
};
test.addMember("a", "a value");
test.addMember("b", "b value");
alert(test);
我在這裏的目標是有test.toString()的返回:
a has a value and b has b value
或什麼都有,你。我正在閱讀MDN,並且似乎JavaScript 1.8.5(或某個子視圖)將具有調用toString()的join()。我卡住了嗎?
謝謝!
編輯:這是我的最終設計,包含修改和刪除功能(萬一任何人都好奇)!
var test = {
members : [],
modifyMember : function(name, value) {
var index = this.members.indexOf(this.members[name]);
if(index < 0) {
return;
}
this.members[index].value = this.members[name].value = value;
},
addMember : function(name, value) {
if(this.members[name]) {
this.modifyMember(name, value);
return;
}
this.members[name] = {
name : name,
value : value,
toString : function() {
return this.name + " has " + this.value;
},
};
this.members.push(this.members[name]);
},
removeMember : function(name) {
if(!this.members[name]) return;
this.members.splice(this.members.indexOf(this.members[name]), 1);
delete this.members[name];
},
toString : function() {
return this.members.join(" AND ");
}
};
或相當'一個具有AA價值和b有ab值'? – naveen
呃...是的。這正是我的意思。 – mpw
我喜歡stewe的答案和gilly3的答案。 Stewe涉及更多的處理,而gilly3的內存使用量更多一些。我已決定使用gilly3,但我想感謝大家這樣快速的回答。感謝您將我的第一個問題發佈到stackoverflow,這將讓我再次回來!乾杯! – mpw