filter适用这种场景吗?还是map?

let obj= [
// 一
    {
      name: "shoes",
      data: [
        {
          value: [1, 2]
        }
      ]
    },
// 二
    {
      name: "shoes2",
      data: [
        {
          value: [2, null]
        }
      ]
    }
  ];
 需要拿到第一项。最终变成——
 [
    {
      name: "shoes",
      data: [
        {
          value: [1, 2]
        }
      ]
    }
  ]
  //也就是说value中的第二个为null的话,那一项就不要了。
  提供点思路~感谢
  我尝试
  obg.filter(item=>{
    return item.data.filter(v=>{
      return v.value[1]!==null
    })
  })
  console.log(obj) //行不通
阅读 1.8k
2 个回答

你的逻辑错在 filter函数是返回一个新数组,在filter里面是做个返回布尔值判断,你却将里面的filter返回的数组当做真假处理返回。

let obj= [
// 一
    {
      name: "shoes",
      data: [
        {
          value: [1, 2]
        }
      ]
    },
// 二
    {
      name: "shoes2",
      data: [
        {
          value: [2, null]
        }
      ]
    },

  ];



  var ss =   obj.filter(item=>{
      return item.data[0].value[1]!==null
  });

  console.log(ss);

以上代码就符合你要求,若然你是类似下面的结构,只要有一个是null,就去掉,那么代码逻辑就是:

        
let obj= [
// 一
    {
      name: "shoes",
      data: [
        {
          value: [1, 2]
        }
      ]
    },
// 二
    {
      name: "shoes2",
      data: [
        {
          value: [2, null]
        }
      ]
    },
    // 三
    {
        name: "shoes3",
        data: [
            {
            value: [3, 4]
            },
            {
            value: [3, null]
            }        
        ]
    },
     // 四
     {
        name: "shoes4",
        data: [
            {
            value: [4, 4]
            },
            {
            value: [4, 4]
            },
            {
            value: [4, 4]
            }            
        ]
    }         
  ];


  var ss =   obj.filter(item=>{
      if(item.data.some((v,index,arr)=>{
          return v.value[1] === null
      }))
      {
          return false;  
      }else{
          return true;
      }
  });

  console.log(ss);

图片描述

内部能直接拿到属性值不需要再filter啊

let arr = obj.filter(item => {
  return !!item.data.value[1]
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题