Azukah
Azukah

Reputation: 227

Check if an object has a property with a specific value

I'm displaying data from an array of objects but I want to filter the results so that I display only the names of those objects that have a winner property with a value of 1.

<script>
$(document).ready(function () {
    var json = [
        {"name":"Name 1","winner":"1"},
        {"name":"Name 2","winner":"0"},
        {"name":"Name 3","winner":"1"},
        {"name":"Name 4","winner":"1"},
        {"name":"Name 5","winner":"0"},
    ];

    var li;
    for (var i = 0; i < json.length; i++) {
        li = $('<li/>');
        li.append(json[i].name);
    $('#feed').append(li);
    }
});
</script>

HTML should be like this (showing only results when winner is true, winner=1)

<ul id="feed" >
    <li>Name 1</li>
    <li>Name 3</li>
    <li>Name 4</li>
</ul>

Upvotes: 2

Views: 87

Answers (4)

Umayr
Umayr

Reputation: 933

Try this:

    var ul = $('ul#feed');
    for (var i = 0; i < json.length; i++) {
        if (json[i].winner == 1) {
            ul.append("<li>" + json[i].name + "</li>");
        }
    }

Working fiddle.

Upvotes: 3

Alex Char
Alex Char

Reputation: 33228

You have to add an if statement to check if winner is equal to 1:

var json = [
        {"name":"Name 1","winner":"1"},
        {"name":"Name 2","winner":"0"},
        {"name":"Name 3","winner":"1"},
        {"name":"Name 4","winner":"1"},
        {"name":"Name 5","winner":"0"},
    ];

    var li;
    for (var i = 0; i < json.length; i++) {
    if(json[i].winner == "1"){ //add this
        li = $('<li/>');
        li.append("<font size='+1'>" + json[i].name + "</font>");
    $('#feed').append(li);
    }
 }

fiddle

Upvotes: 3

Darin Dimitrov
Darin Dimitrov

Reputation: 1039498

You may try using an if statement:

for (var i = 0; i < json.length; i++) {
    if (json[i].winner === '1') {
        li = $('<li/>');
        li.append("<font size='+1'>" + json[i].name + "</font>");
        $('#feed').append(li);
    }
}

Upvotes: 4

adeneo
adeneo

Reputation: 318352

Just add a condition in the loop

for (var i = 0; i < json.length; i++) {
    if (json[i].winner === "1") {

        $('<li />', {text : json[i].name}).appendTo('#feed');

    }
}

FIDDLE

Upvotes: 3

Related Questions