问题: 我想以一种方式绑定数组中的值,当我改变一个值时,另一个值将改变,反之亦然。
var array = [1,2,3,1];
array[0] = array[3];
array[0] = 7;
console.log(array[3]) //this will give 1 and I need 7 here.
我找到了一种方法来处理对象,但它并不像我希望的那样干净。我的朋友告诉我,这是不可能的,但我对此表示怀疑。
答案 0 :(得分:2)
只需使用对象并引用它们:
var array = [{v: 1}, {v: 2}, {v: 3}, {v: 1}];
array[0] = array[3];
array[0].v = 7;
console.log(array[3].v);
要获得稍微更易读的代码,您可能想要实现自定义地图:
class LinkMap extends Map {
get(k) {
return (super.get(k) || {}).value;
}
set(k, value) {
if(super.has(k)) {
super.get(k).value = value;
} else {
super.set(k, { value });
}
}
link(key, to) {
return super.set(to, super.get(key));
}
}
所以可以这样做:
const list = new LinkMap();
list.set(0, 1).set(1, 2).set(2, 3).link(0, 4);
list.set(4, 7);
console.log(list.get(0));