javascript - 从集合中的对象中提取属性值?

标签 javascript typescript ecmascript-6

例如,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/

相关文章:

javascript - HTML 字体和粗体不在 IE 11 中呈现,但在 chrome 中工作 - 从 javascript 动态

angular - 如何在 Angular 2 中重新加载相同 URL 的组件?

javascript - typescript : Add an autoincrement id attribute of each object in array

javascript - 箭头功能 - 为什么将全局对象打印到控制台?

javascript - DateTimePicker 日期格式

javascript - Ember.js - View 的模型观察器触发两次

javascript - 滚动条不工作

javascript - JS 或 TS - 获取接口(interface)的键

javascript - 具有从子类 JS 调用的方法的类作用域

javascript - 如何配置 WebStorm 以正确格式化生成器函数?