javascript - 过滤掉未定义的属性

标签 javascript

我正在迭代标记数组并尝试过滤掉那些开放时间未定义的地方,但是,我无法过滤掉未定义的数据。下面是我的代码和结果:

const markers = data.map(place => {
      if (typeof place. opening_now != 'undefined') {
        return {
          position: place.geometry.location,
          content: place.name,
          key: place.id,
          opening_now: place.opening_now
        };
      }

(20) [undefined, {…}, {…}, undefined, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]

0:undefined

1:{position: _.F, content: "San Francisco Marriott Union Square", key: "c904f2aae3fb8743f27bce36da94753a19b02131", opening_now : {open_now: true, weekday_text: Array(0)}}

2:{position: _.F, content: "Cornell Hotel De France", key: "547ceb15210b70b8734500183410bb10c644c395", opening_now :{open_now: true, weekday_text: Array(0)}}

3:undefined

4:{position: _.F, content: "San Francisco Marriott Marquis", key: "f007d2f91c0070ebdfec60275baa33623f0b771b", opening_now: {…}}

5:{position: _.F, content: "La Mar Cebicheria Peruana", key: "2dfcc4cf449104804f979d0c74583f2b3a48d046", opening_now: {…}}..

最佳答案

输出数据中出现未定义的原因是map对数组中的每个元素进行操作。如果您的数组有 10 个元素长,则输出数组也将有 10 个元素长。在您的示例中,当您的 opening_hoursundefined 时,您只是返回 undefined (即“无对象”)。

The map() method creates a new array with the results of calling a provided function on every element in the calling array.

所以 filter解决方案非常整洁。它的工作方式与 map 相同,但仅返回满足您为函数指定的条件的元素。

ES6

const markers = data.filter(place => place.opening_now.open_now)

ES5(您可能更习惯)

var markers = data.filter(function (place) {
  return place.opening_now.open_now;
});

它会删除您在数组中出现的未定义间隙。在本示例中,由于您没有明确表达 undefined,因此也会删除营业时间等于 null 的实例(如果这是您的包)。

<强> DEMO

关于javascript - 过滤掉未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641790/

相关文章:

javascript - 页面刷新后 ng-click 停止工作

javascript - 使用 resharper 8 查找所有带有单引号的字符串

javascript - Nodejs 将值从一个模块传递到另一个模块

javascript - 与阿多尼斯 react

javascript - 将 Jasmine 单元测试与 100 多个相同类型的测试一起使用

javascript - 通过简单地轮询网络服务器来浏览器推送通知

javascript - 多少 JSON 是太多的 JSON?

javascript - Javascript 的数组方法 valueOf 的用途是什么?

javascript - 如何自定义删除确认消息

javascript - 使用 svg 圆的 url 填充模式时图像模糊