使用保证顺序迭代javascript建立键值关系的更好方法?
我正在构建我的一个小项目,并且没有找到其他解决方案来保证迭代顺序的键值关系 到目前为止我想到的是使用保证顺序迭代javascript建立键值关系的更好方法?,javascript,arrays,key,iteration,Javascript,Arrays,Key,Iteration,我正在构建我的一个小项目,并且没有找到其他解决方案来保证迭代顺序的键值关系 到目前为止我想到的是 var Plate = function () { this.children = []; this.childrenKeys = []; }; var proto = Plate.prototype; proto.addChild = function (key, child) { this.childrenKeys.push(key); this.chil
var Plate = function () {
this.children = [];
this.childrenKeys = [];
};
var proto = Plate.prototype;
proto.addChild = function (key, child) {
this.childrenKeys.push(key);
this.children.push(child);
};
proto.removeChild = function (key) {
var index = this.childrenKeys.indexOf(key);
delete(this.children[index]);
};
proto.update = function () {
this.children.forEach(function (child) {
child.update();
});
};
虽然这确实有效,但我可以用一个键和一个值添加到图版
,也可以用一个键从图版中删除,但这样做似乎并不正确
我知道我不能在中使用对象和,因为迭代顺序完全不一致,我不能让它像那样
这是执行此操作的正确方法还是有内置javascript的方法
谢谢为什么不使用包含键和值的对象数组
var list = [
{ key: '2', value: 'foo' },
{ key: 'abc', value: 'bar' }
];
// Usage
alert(list[0].key); // '2'
alert(list[0].value); // 'foo'
下面是使用此方法的代码(未测试)
var板=功能(){
this.list=[]
};
var proto=板原型;
proto.addChild=函数(键,子项){
this.list.push({key:key,child:child});
};
proto.removeChild=函数(键){
for(var i=0;i
为什么不使用单个数组并使用arr.push({'key':key,'child':child}
)?通过这种方式,您可以确保所有数据始终很好地绑定在一起。但是,JavaScript中没有内置的按插入顺序排列的键值容器。在不同数组中存储键和值似乎很奇怪之后,我就这样做了,让我把它绑定到我的代码中,我会接受:)工作得很好,谢谢:)尽管我使用了forEach
,再次感谢!
var Plate = function () {
this.list = []
};
var proto = Plate.prototype;
proto.addChild = function (key, child) {
this.list.push({ key: key, child: child });
};
proto.removeChild = function (key) {
for (var i = 0; i < this.list.length; i++) {
if (this.list[i].key === key) {
delete(this.list[i]);
return;
}
}
};
proto.update = function () {
for (var i = 0; i < this.list.length; i++) {
this.list[i].child.update();
}
};