Предотвратить рендеринг объектов JSON при соблюдении определенных условий - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть две DataTables: «Допуск» и «Специальный».Они содержат данные в формате JSON, которые правильно отображаются.

Я хочу сделать так, чтобы при наличии определенных данных из Приемных поступлений они не передавались в Приемные, а в Особые.

Есть мысли о том, как это сделать?Я подумал, что если я смогу получить данные для отображения в специальной таблице, то позже я могу сделать обратное для таблицы Admissions.

Вот фрагмент кода JSON, который, надеюсь, должен прояснить ситуацию:

{
    "d": {
      "results": [
        {
         ...
         "p_h_v": "" // ------------ doesn't meet conditions, gets rendered to Admissions
         ...
        },
        {
         "p_h_v": "Yes" // ---------- meets conditions, gets rendered to Special instead
         ...

Фрагмент JS для таблицы Special:

import $ from 'jquery';
import admissData from '../JSON/admiss.json';
import DataTable from 'datatables.net';

function loadAdmiss() {
    let admissText = admissData.d.results.map(function(val) {
        if (val.p_h_v.includes("")) return ""; // ------- I'm thinking that I should include code right here, but I'm not sure
        return {
            "PHV": val.p_h_v,
            ... // ----- irrelevant data
        }
    })

    $('#phv-table').DataTable({
        columns: [
            { data: "PHV" },
                ...
        ],
        ... // ----- irrelevant data

Обновление:

function loadAdmiss() {
    let admissText = admissData.d.results.filter(val => {
        if (val.p_h_v !== "") {
            return {
                "PHV": val.p_h_v
                ...
            }
        }
    })

    $('#phv-table').DataTable({

1 Ответ

0 голосов
/ 19 февраля 2019

Если вы напишите следующее

admissText = admissData.d.results.filter(x => x.p_h_v !== "");

Он вернет вам массив results с элементами, имеющими некоторое значение в p_h_v

Пример значения admissText:

[
    {
        "p_h_v": "some text"
        ...
    },
    {
        "p_h_v": "some text"
        ...
    },
    ...
]

.filter() может просто отфильтровать некоторые данные и вернуть результат.Вы не можете вернуть другой массив.Для этого вам понадобится .map().

admissText = admissData.d.results.map(x => {
        if (x.p_h_v !== "") {
            return {
                "PHV": x.p_h_v
            }
        }
    }).filter(x => x !== undefined);

Пример значения admissText:

[
    {
        "PHV": "some text"
    }
    ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...