0

I'm stuck with jQuery function parameter usage. See question at the end...

Data JSON - data.json file.

[{
        "id": 1,
        "first_name": "Jeanette",
        "last_name": "Penddreth",
        "email": "jpenddreth0@census.gov",
        "gender": "Female",
        "ip_address": "26.58.193.2"
    },
    {
        "id": 2,
        "first_name": "Giavani",
        "last_name": "Frediani",
        "email": "gfrediani1@senate.gov",
        "gender": "Male",
        "ip_address": "229.179.4.212"
    },
    {
        "id": 3,
        "first_name": "Noell",
        "last_name": "Bea",
        "email": "nbea2@imageshack.us",
        "gender": "Female",
        "ip_address": "180.66.162.255"
    },
    {
        "id": 4,
        "first_name": "Willard",
        "last_name": "Valek",
        "email": "wvalek3@vk.com",
        "gender": "Male",
        "ip_address": "67.76.188.26"
    }
]

Full HTML + JS source code

<!DOCTYPE html>
<html>

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.core.js"></script>
    <meta charset="utf-8">
    <title> Filter Test
    </title>

</head>

<body>
    <pre id="test"></pre>
</body>

<script>
    var dataFiltered = function() {
        var _data = [];
        var filter = {};
        this.ReadData = function() {
            $.ajax({
                    url: "data.json",
                    dataType: "json",
                    type: 'get',
                    async: false,
                    // mimeType: "textPlain",
                })
                .done(function(data) {
                    _data = data;
                });
        }
        this.ReadData();
        this.SetFilter = function(field, value) {
            filter = {...filter,
                "gender": value,
            };
            let _new = _.filter(_data, filter);
            return _new;
        }
        var txt = JSON.stringify(this.SetFilter('gender', 'Male'), undefined, 2);
        $("#test").html(txt);
    }
    data = new dataFiltered();
</script>


</html>

I'd like that "column" parameter in SetFilter function to be used in filter settings, like

        this.SetFilter = function(field, value) {
            filter = {...filter,
              field: value,
            };
            let _new = _.filter(_data, filter);
            return _new;
        }

Unfortunately, column is misinterpreted (speaking to me) and filter is set to search data for column named "field" and not "gender".

How am I suppose to do ? Thanks.

BartmanDilaw
  • 398
  • 4
  • 15

1 Answers1

0

Ok, found my solution here : How To Set A JS object property name from a variable

I just have to write like this :

        filter = {...filter,
            [column]: value,
        };

Will close this as soon as I can (2 days) :)

BartmanDilaw
  • 398
  • 4
  • 15