我有三个键值的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');
使用循环,我可以获得这三个键的值
for( var value of myset){
console.log(value);
}
如何获得个人价值?我想获得价值的第二把钥匙?
有什么选择吗?
我尝试了这些但没有用
myset.get('second');
myset(1);
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');
// Using loop I can got value of these three key
for (var value of myset) {
console.log(value);
}
// How can get individual value? I want to get second key of value?
// I have tried these but not working
myset.get('second');
myset(1);
答案 0 :(得分:3)
Set
是一组值,而不是它们的映射,因此add
接受1个参数,它是一个值。您要找的东西是Map
。
在this answer中解释了通过索引获取值的过程,对于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'); // true
答案 1 :(得分:1)
JavaScript Set.add()
仅采用一个参数。因此,您的第二个参数始终被忽略,而作为其JS,则不会引发任何错误。您可以使用简单的JS对象来实现您想要的功能。
var x = {}
x[key1] = value1
x[key2] = value2
然后您将获得如下值:
x[key1] # will output value1
答案 2 :(得分:1)
Set.add仅采用一个参数。您可以做的是,插入JSON对象,如下所示:
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'});
var val = [...myset].filter(x => x.hasOwnProperty('first'))[0]['first'];
console.log(val)
答案 3 :(得分:0)
您使用的是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');
实际上是在创建一个具有值"first", "second", "third"
的集合(第二个参数将被忽略,因为Set.prototype.add()
仅采用一个参数)。
对于通用键/值存储,您应该使用JavaScript对象,最好使用通过null
可用的Object.create(null)
原型(null
原型确保您不会再阅读其他任何内容值返回原型链,而无需进行Object.prototype.hasOwnProperty()
检查。