Jit*_*har 4 javascript ecmascript-6
我有带有三个键值的 Set() 对象
var myset =new Set();
myset.add('first','This is first value');
myset.add('second','This is second value');
myset.add('third','This is third value');
Run Code Online (Sandbox Code Playgroud)
使用循环我可以获得这三个键的值
for( var value of myset){
console.log(value);
}
Run Code Online (Sandbox Code Playgroud)
怎样才能获得个人价值?我想获得第二个价值键?
有什么选择吗?
我试过这些但没有用
myset.get('second');
myset(1);
Run Code Online (Sandbox Code Playgroud)
var myset =new Set();
myset.add('first','This is first value');
myset.add('second','This is second value');
myset.add('third','This is third value');
Run Code Online (Sandbox Code Playgroud)
Set是一组值,而不是它们的映射,因此add接受 1 个参数,这是一个值。你要找的东西是Map。
在这个答案中解释了通过其索引获取值,并且对于Set和都是相同的Map。应该迭代一个集合,直到达到索引。这可以通过首先将其转换为数组来以较低效率的方式完成:
const map = new Map();
map.set('first','This is first value');
map.set('second','This is second value');
map.set('third','This is third value');
console.log(map.get('second') === 'This is second value'); // true
console.log([...map.values()][1] === 'This is second value'); // trueRun Code Online (Sandbox Code Playgroud)
你用Set错了。它不是键/值存储,而是唯一值的列表。
你的代码...
var myset =new Set();
myset.add('first','This is first value');
myset.add('second','This is second value');
myset.add('third','This is third value');
Run Code Online (Sandbox Code Playgroud)
实际上是创建一组值"first", "second", "third"(第二个参数被忽略,因为Set.prototype.add()只接受一个参数)。
对于通用键/值存储,您应该使用 Map 或常规 JavaScript 对象(取决于您支持的环境)。
映射允许您存储键/值对,其中键可以是任何类型。这与常规 JS 对象不同,常规 JS 对象的键必须是字符串类型。
const myMap = new Map();
myMap.set('key', 'value');
Run Code Online (Sandbox Code Playgroud)
您可以使用常规 JS 对象,因为您的键是字符串,最好具有null可用的原型Object.create(null)(null原型确保您不会在不进行检查的情况下读回原型链上的任何其他值Object.prototype.hasOwnProperty())。
| 归档时间: |
|
| 查看次数: |
4272 次 |
| 最近记录: |