例如,SomeItem
是一个对象的模型(将被建模为 Typescript 中的一个接口(interface),或者你可以想象如果我们在无类型的土地上有一个形式为 SomeItem
的项目。
假设我有一个 Set
: mySet = new Set([{item: SomeItem, selected: true}, ...])
.
我想检查是否 itemA: SomeItem
是否被选中。
最干净的方法是什么?
这没有用:
const isSelected = mySet.has({item: itemA, selected: true});
这也没有:
const isSelected = Array.from(mySet).includes({item: itemA, selected: true});
我假设以上两个不起作用,因为它试图通过引用而不是值来比较对象。
这确实有效:
let isSelected: boolean;
mySet.forEach(state => {
if (state.item === itemA) {
isSelected = state.selected;
}
});
但我的直觉告诉我有一个正确的方法可以做到这一点。
所以, 如何提取 Set 中对象的属性值?
最佳答案
只有当它们具有相同的引用时,比较具有相同属性的两个对象才返回 true,我建议比较它们的属性,因为属性是原始值..
数组some方法可以用来过滤集合中是否包含特定对象
let mySet = new Set([{item: 'SomeItem', selected: true}]);
let itemA = "SomeItem";
let isSelected = Array.from(mySet).some(element => element.item === itemA);
console.log(isSelected);
关于javascript - 从集合中的对象中提取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667436/