绑定数组中不同元素的值(JavaScript)

时间:2018-06-11 16:08:38

标签: javascript arrays data-binding binding bind

问题: 我想以一种方式绑定数组中的值,当我改变一个值时,另一个值将改变,反之亦然。

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.

我找到了一种方法来处理对象,但它并不像我希望的那样干净。我的朋友告诉我,这是不可能的,但我对此表示怀疑。

1 个答案:

答案 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));