如果满足某些条件,则阻止呈现JSON对象

时间:2019-02-19 18:49:34

标签: javascript jquery json datatable

我有两个数据表:“准入”和“特殊”。它们包含正确呈现的JSON数据。

我想这样做,以便如果存在来自“录取”的某些数据,那么它们将呈现给“录取”,而是呈现为“特殊”。

关于如何解决此问题的任何想法?我认为,如果可以将数据显示在“特殊”表中,那么以后可以对“录取”表进行相反的操作。

下面是一个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代码段:

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 :(得分:1)

如果您编写以下内容

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"
    }
    ...
]