获取所有实例化的javascript对象并更新值
Getting all instantiated javascript objects and updating values
下面是一个简化的对象示例。我想做的是当我调用update方法时,让它基于所有对象进行更新。所以,我需要以某种方式跟踪所有对象(我可以在这个游戏对象中这样做吗?或者我需要包装它吗?)
var Game = function() {
this.data = [];
}
Game.prototype = {
add: function(game) {
this.data.push(game);
},
update: function(game) {
for(i = 0; i < this.data.length; i++) {
if(this.data[i].id == game.id) {
this.data[i].name = game.name;
}
}
},
get: function() {
console.log(this.data);
}
}
var g1 = new Game;
g1.add({id: '5', name: 'firstname'});
g1.add({id: '6', name: 'secondname'});
var g2 = new Game;
g2.add({id: '5', name: 'firstname'});
g2.add({id: '6', name: 'secondname'});
g1.update({id: '5', name: 'firstname-updated'})
g1.get();
g2.get();
基本上,如果你运行这个程序,你会看到g1.get()写入的数据具有更新的id 5,其中g2仍然具有名称为"firstname"的原始id 5。
非常感谢您的帮助!
编辑:只是想添加,我仍然希望有多个对象。并不是每个对象都有匹配的id。但如果他们这样做了,他们都应该更新。
您可以执行以下操作:
function Game() {
this.data = [];
}
// Object to store games with the same id
Game.games = {};
Game.prototype.add = function(game) {
// Add the game to the existing array with same id
if (Game.games[game.id]) {
Game.games[game.id].push(game);
// Or create new array if first with this id
} else {
Game.games[game.id] = [game];
}
// other stuff
}
// Update all games with same id
Game.prototype.update = function(game) {
var games = Game.games[game.id]
// games is a reference to an array of all the games with the same id
}
将代码更新为以下内容以获得所需结果:
var Game = function() {
//this.data = [];
}
Game.prototype = {
data : [],
add: function(game) {
var found = false;
for(i = 0; i < this.data.length; i++) {
if(this.data[i].id == game.id) {
found = true;
break;
}
}
if( !found ) {
this.data.push(game);
}
},
update: function(game) {
for(i = 0; i < this.data.length; i++) {
if(this.data[i].id == game.id) {
this.data[i].name = game.name;
}
}
},
get: function() {
console.log(this.data);
}
};
相关文章:
- 从knockout.js中的另一个对象更新一个深度结构化的javascript对象
- Meteor使用对象更新集合
- 如何使用不同视图的JSON对象更新angular js中的全局JSON字段
- 流星反应式嵌套对象更新父对象
- 从返回的 MongoDB 对象更新 Angular.js $scoped
- 在节点 JS 中将值从一个对象更新到另一个对象
- 使用循环从另一个对象更新对象
- React未从数组内的对象更新属性
- 可以't使用新对象更新localStorage
- 使用MongoDB,如何使用变量中的对象更新数组中的对象
- 从用PHP脚本创建的json对象更新速度表数据
- mongoDB-使用$set和一个对象更新文档
- 无法使用新数据对象更新Knockout UI
- 通过REST端点用JSON对象更新Mongoose架构
- 变量引用对象的值,但在对象更新时不更新
- 如何使用jq命令行实用程序执行JSON对象更新
- ReactJS皮质对象更新渲染未调用
- 如何使用json对象更新dojo网格
- 使用接收到的对象更新css设置
- 只有一些我的解析对象更新(总是9,但没有更多),当我运行这个javascript解析云代码