微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较数组中的对象

如何解决比较数组中的对象

我有一个对象数组

let pets = [
    {type: 'dog',name: 'Bernie'},{type: 'cat',name: 'Bonnie'},{type: 'lizard',name: 'heartache'},{type: 'dog',name: 'spinach'}
];

我正在编写一个函数,它接受这个数组,如果所有类型都相同,则返回 true,否则返回 false。

这是我尝试过的:

    for (let i = 0; i < pets.length; i++) {
        if (pets[i].type != pets[i + 1].type) {
            return false;
        } else {
            return true;
        }
    }

我认为这会奏效。这不是遍历循环并将第一个对象的类型与下一个对象的类型进行比较吗?

我也试过

for(let i = 0;i < pets.length;i++){
      let petone = pet[i];
      let petNext = pet[i+1];
      if(petone[i].type != petNext[i].type){
        return false;
      }else{
        return true;
 }
}

我觉得我很接近。我将如何比较宠物类型并返回 true 或 false。

解决方法

您只需要在循环完成后return true,否则无论如何您都会在第一次迭代中返回。

在比较之前,您还需要确保您要迭代的项目之后的项目存在,因此不要迭代到最后,而是在最后一个之前迭代。

for (let i = 0; i < pets.length - 1; i++) {
    if (pets[i].type != pets[i + 1].type) {
        return false;
    }
}
return true;

另一种方法:

const { type } = pets[0];
return pets.every(p => p.type === type);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。