通过空属性筛选数组

Filter array by empty property

本文关键字:筛选 数组 属性      更新时间:2023-09-26

我在Ajax响应中得到如下所示的对象数组。

{
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
        "tags": ["cold", "ice"],
        "dimensions": {
            "length": 7.0,
            "width": 12.0,
            "height": 9.5
        },
        "warehouseLocation": {
            "latitude": -78.75,
            "longitude": 20.4
        }
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
        "dimensions": {
            "length": 3.1,
            "width": 1.0,
            "height": 1.0
        },
        "warehouseLocation": {
            "latitude": 54.4,
            "longitude": -32.7
        }
    }
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
        "dimensions": {
            "length": 3.1,
            "width": 1.0,
            "height": 1.0
        },
        "warehouseLocation": ""
    }

我想通过warehouseLocation过滤这些对象,这意味着我只需要warehouseLocation不为空的对象。

可以使用Array.prototype.filter函数:

var data = [{
    "id": 2,
    "name": "An ice sculpture",
    "price": 12.50,
    "tags": ["cold", "ice"],
    "dimensions": {
      "length": 7.0,
      "width": 12.0,
      "height": 9.5
    },
    "warehouseLocation": {
      "latitude": -78.75,
      "longitude": 20.4
    }
  }, {
    "id": 3,
    "name": "A blue mouse",
    "price": 25.50,
    "dimensions": {
      "length": 3.1,
      "width": 1.0,
      "height": 1.0
    },
    "warehouseLocation": {
      "latitude": 54.4,
      "longitude": -32.7
    }
  },
  {
    "id": 3,
    "name": "A blue mouse",
    "price": 25.50,
    "dimensions": {
      "length": 3.1,
      "width": 1.0,
      "height": 1.0
    },
    "warehouseLocation": ""
  }
];
var warehouseData = data.filter(function(val) {
  return val.warehouseLocation != "";
});

这是一个开始的例子。

var arr = [{
  "id": 2,
  "name": "An ice sculpture",
  "price": 12.50,
  "tags": ["cold", "ice"],
  "dimensions": {
    "length": 7.0,
    "width": 12.0,
    "height": 9.5
  },
  "warehouseLocation": {
    "latitude": -78.75,
    "longitude": 20.4
  }
}, {
  "id": 3,
  "name": "A blue mouse",
  "price": 25.50,
  "dimensions": {
    "length": 3.1,
    "width": 1.0,
    "height": 1.0
  },
  "warehouseLocation": {
    "latitude": 54.4,
    "longitude": -32.7
  }
}, {
  "id": 3,
  "name": "A blue mouse",
  "price": 25.50,
  "dimensions": {
    "length": 3.1,
    "width": 1.0,
    "height": 1.0
  },
  "warehouseLocation": ""
}]
var filteredArr = arr.filter(function(val) {
  if (val.warehouseLocation == "")
    return false;
  return true;
});
console.log(filteredArr);