首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于内部对象列条件的数组对象过滤方法

基于内部对象列条件的数组对象过滤方法
EN

Stack Overflow用户
提问于 2022-01-21 10:02:26
回答 2查看 252关注 0票数 1

我有以下对象,我只想得到第一行(rowNumber: 1),条件是"columnId":8505590182897540的值应该等于Open,而"columnId":7009559238731652的值应该不存在。

代码语言:javascript
复制
  output =  { "rows": [
        {
            "id": 1844195940165508,
            "rowNumber": 1,

            "cells": [
                {
                    "columnId": 8505590182897540,
                    "value": "Open",
                    "displayValue": "Open"
                },
                {
                    "columnId": 7009559238731699,
                    "value": "Steep",
                    "displayValue": "Steep"
                },
                {
                    "columnId": 7009559238731652
                }
            ]
        },
        {
            "id": 1844195940165509,
            "rowNumber": 2,

            "cells": [
                {
                    "columnId": 8505590182897540,
                    "value": "Open",
                    "displayValue": "Open"
                },
                {
                    "columnId": 7009559238731699,
                    "value": "Steep",
                    "displayValue": "Steep"
                },
                {
                    "columnId": 7009559238731652,
                    "value": "Field has value",
                    "displayValue": "Field has value"
                }
            ]
        }
    ]
}

我能够使用基于cell.value = Open“的代码和筛选器循环遍历行,并将结果添加到列表中,但是如果值为=="Open”和值为空的列'7009559238731652‘,如何根据列'8505590182897540’检查每个单元格,并将该行id添加到列表中?

这是我到目前为止掌握的代码

代码语言:javascript
复制
var emptyArray = [];
output.rows.map(function (row) {
    row.cells.forEach(function (cell) {
          if (cell.value == 'Open') {
              emptyArray.push(row.id);
          }
      })
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-21 10:12:03

可以为单元对象定义筛选器并检查所有筛选器。

代码语言:javascript
复制
const
    data = [{ id: 1844195940165508, rowNumber: 1, cells: [{ columnId: 8505590182897540, value: "Open", displayValue: "Open" }, { columnId: 7009559238731699, value: "Steep", displayValue: "Steep" }, { columnId: 7009559238731652 }] }, { id: 1844195940165509, rowNumber: 2, cells: [{ columnId: 8505590182897540, value: "Open", displayValue: "Open" }, { columnId: 7009559238731699, value: "Steep", displayValue: "Steep" }, { columnId: 7009559238731652, value: "Field has value", displayValue: "Field has value" }] }],
    filters = [
        { columnId: 8505590182897540, value: 'Open' },
        { columnId: 7009559238731652, value: undefined }
    ],
    result = data.filter(({ cells }) => filters.every(f => cells.some(c =>
        c.columnId === f.columnId &&
        c.value === f.value
    )));

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2022-01-21 10:28:16

地图行,在映射lambda中,过滤器为所需的单元格。类似于:

代码语言:javascript
复制
const filterCells = v => 
  v.columnId === 8505590182897540 && v.value === `Open` ||
  v.columnId === 7009559238731652 && !v.value;
const filtered = values().rows.map(v => 
  ( {id: v.id, cellsFound: v.cells.filter(filterCells)} ));

console.log(`if you only need ids: ${filtered.map(v => v.id)}`);
console.log(filtered);

function values() {
  return {
    "rows": [{
        "id": 1844195940165508,
        "rowNumber": 1,

        "cells": [{
            "columnId": 8505590182897540,
            "value": "Open",
            "displayValue": "Open"
          },
          {
            "columnId": 7009559238731699,
            "value": "Steep",
            "displayValue": "Steep"
          },
          {
            "columnId": 7009559238731652
          }
        ]
      },
      {
        "id": 1844195940165509,
        "rowNumber": 2,

        "cells": [{
            "columnId": 8505590182897540,
            "value": "Open",
            "displayValue": "Open"
          },
          {
            "columnId": 7009559238731699,
            "value": "Steep",
            "displayValue": "Steep"
          },
          {
            "columnId": 7009559238731652,
            "value": "Field has value",
            "displayValue": "Field has value"
          }
        ]
      }
    ]
  };
}
代码语言:javascript
复制
.as-console-wrapper {
  max-height: 100% !important;
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70799503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档