我有以下物件,我只想得到第一行是 Number (rowNumber: 1) 的標準是 "columnId": 8505590182897540的值應該等于Open并且 "columnId": 7009559238731652應該有它的值不存在。
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" 進行過濾并將結果添加到串列中,但是如果 value = ="Open" 和 columnid '7009559238731652',其中 value 為空白并將該行 id 添加到串列中?
這是我到目前為止的代碼
var emptyArray = [];
output.rows.map(function (row) {
row.cells.forEach(function (cell) {
if (cell.value == 'Open') {
emptyArray.push(row.id);
}
})
});
uj5u.com熱心網友回復:
您可以為單元格物件定義過濾器并檢查所有過濾器。
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);
uj5u.com熱心網友回復:
映射行,在 map lambda 中過濾所需的單元格。就像是:
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"
}
]
}
]
};
}
.as-console-wrapper {
max-height: 100% !important;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417630.html
標籤:
