给定以下对象:

let data = { id: 1,
             pets: [
               {
                name: "",
                myPets: [ 
                  { 
                    name: ""
                    breed: ""
                  },
                  { 
                    name: "Jack"
                    breed: "poodle"
                  }

                ]
             ]
           }

寻找一种更简洁的方式来编写以下代码,以判断是否至少有一条记录在myPets数组中分配了昵称.

我已经用了两个嵌套的.maps,但我不确定我是否可以用.filter完成下面的任务,因为我不确定如何处理这个问题,使用.filter

data.pets.map((pet) => {
  if (pet.myPets.length > 0) {
    pet.myPets.map((myPet) => {
      if (myPet.name) {
        console.log("Pet name found");
      } else {
        console.log("Pet name not found");
    });
  }
});

推荐答案

您可以使用some()方法而不是嵌套的map和if语句来判断myPets数组中是否至少有一条记录分配了昵称.

if (data.pets.some(pet => pet.myPets.some(myPet => myPet.name))) {
  console.log("Pet name found");
} else {
  console.log("Pet name not found");
}

这将判断是否有任何具有myPets数组的pet对象具有至少一个具有真实名称属性的对象,如果为真,它将记录"Pet Name Found",否则将记录"Pet Name Not Found".

Javascript相关问答推荐

如何才能拥有在jQuery终端中执行命令的链接?

传递一个大对象以在Express布局中呈现

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

我可以从React中的出口从主布局调用一个处理程序函数吗?

Angular material 拖放堆叠的牌副,悬停时自动展开&

你怎么看啦啦队的回应?

使用JQuery单击元素从新弹出窗口获取值

加载背景图像时同步旋转不显示的问题

如何将innerHTML字符串修剪为其中的特定元素?

Use Location位置成员在HashRouter内为空

在css中放置所需 colored颜色 以填充图像的透明区域

MarkLogic-earch.suggest不返回任何值

如何 for each 输入动态设置输入变更值

有效路径同时显示有效路径组件和不存在的路径组件

匹配一个或多个可选重复的特定模式

在HTML5画布上下文中使用putImageData时,重载解析失败

如何在Highlihte.js代码区旁边添加行号?

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?

CSS网格使页面自动滚动

如何使用Reaction/Redux创建购物车逻辑?