需求: 一个数据结构保存一对数据的对应关系, key:value, 保证key本身不重复, value也不重复, 如果值一样就是相同的业务含义.
  • 要方便的删除,
  • 增加,
  • 查询都要方便
    • 直接索引
    • 遍历
如果是数组
let a=[];
//增加
a.push([key,value]);

//索引, 根据key拿到元素
let i=a.indexof([key, value]);
a[i];
//遍历
for (let i = 0; i < a.length; i++) {
  a[i][1];
}

//删除, 根據key删除有点绕.
a.splice(a.indexof([key, value]),1);
如果是对象
let a={};
//增加
a[key]=value;

//索引
a[key]

//遍历 有点绕
for (let i = 0; i < object.keys(a).length; i++) {
  a[object.keys(a)[i]];
}

//删除
delete a[key]

大神有办法

咨询大神之后, 大神建议用map

var sayings = new Map();
sayings.set('dog', 'woof');
sayings.set('cat', 'meow');
sayings.set('elephant', 'toot');
sayings.size; // 3
sayings.get('fox'); // undefined
sayings.has('bird'); // false
sayings.delete('dog');
sayings.has('dog'); // false

for (var [key, value] of sayings) {
  console.log(key + ' goes ' + value);
}
// "cat goes meow"
// "elephant goes toot"

sayings.clear();
sayings.size; // 0

通过mdn发现, set也可以用.

var mySet = new Set();
mySet.add(1);
mySet.add('some text');
mySet.add('foo');

mySet.has(1); // true
mySet.delete('foo');
mySet.size; // 2

for (let item of mySet) console.log(item);
// 1
// "some text"