Angular 2 / Typescript - 如何检查对象数组以查看属性是不是具有相同的值?
Posted
技术标签:
【中文标题】Angular 2 / Typescript - 如何检查对象数组以查看属性是不是具有相同的值?【英文标题】:Angular 2 / Typescript - how to check an array of objects to see if a property has the same value?Angular 2 / Typescript - 如何检查对象数组以查看属性是否具有相同的值? 【发布时间】:2017-08-07 18:30:34 【问题描述】:This question 在 javascript 中执行此操作,但我原以为在 Typescript 中我可以执行某种映射/过滤操作来执行相同的操作。
我有一个名为Room
的对象数组。每个Room
都有一个名为Width
的属性(实际上是一个字符串,例如'4m'、'5m'、'6.5m')。
我需要检查整个数组,看看是否所有的宽度都相同。
基于这个问题,我有这个问题,但我想知道 TypeScript 是否有更好的东西:
let areWidthsTheSame = true;
this.qp.rooms.forEach(function(room, index, rooms)
if (rooms[index] != rooms[index+1]) areWidthsTheSame = false;
);
有什么想法吗?
仅供参考,链接的问题有一个链接到these 性能测试的评论,这在这个问题的上下文中很有趣:
【问题讨论】:
【参考方案1】:这可以通过以下方式完成:
const widthArr = rooms.map(r => r.width);
const isSameWidth = widthArr.length === 0 ? true :
widthArr.every(val => val === widthArr[0]);
我们首先将房间数组转换为宽度数组,然后检查宽度数组中的所有值是否相等。
【讨论】:
很好——我想你可以把它写成一行,对吧? const isSameWidth = rooms.map(r => r.width).every(val => val === rooms[0].width); 不,因为我们访问第一个索引,所以如果数组为空,你会得到一个异常,如果你 100% 确定你的数组中有房间,那么你可以安全地这样做@ rmcshary以上是关于Angular 2 / Typescript - 如何检查对象数组以查看属性是不是具有相同的值?的主要内容,如果未能解决你的问题,请参考以下文章
带有 Ionic 2 Angular 2 和 TypeScript 的 OpenPGP
如何部署我的 Angular 2 + Typescript + Webpack 应用程序
Angular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据
如何使用 TypeScript 在我的 Angular 2 组件中声明模型类?