Angular 2 / Typescript - 如何检查对象数组以查看属性是否具有相同的值?

时间:2017-03-16 14:12:31

标签: angularjs arrays angular typescript

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 个答案:

答案 0 :(得分:2)

这可以通过以下方式完成:

const widthArr = rooms.map(r => r.width);
const isSameWidth = widthArr.length === 0 ? true :
                          widthArr.every(val => val === widthArr[0]);

我们首先将房间数组转换为宽度数组,然后检查宽度数组中的所有值是否相等。