Search code examples
javascriptarrayssortingsliceobject-literal

How do I slice an array from an array of object literals?


I have this array, in which each index contains an object literal. All of the object literals have the same properties. Some of the object literals have the same value for a given property, and I want to create a new array containing only those object literals.

My idea is to sort the array, and slice it into a new array...

Here is the array:

var arr = [];

arr[0] =
{
    country: "United States",
    num: 27
};

arr[1] =
{
    country: "Australia",
    num: 5
};

arr[2] =
{
    country: "United States",
    num: 7
};


So, I want to create a new array containing only those objects where the property country is "United States". This is my crazy idea so far, which doesn't work:

function getNewArray(arr)
{
    var arr2 = [];

    for(var key in arr)
    {
        for(var i = 0; i < arr.length - 1; i++)
        {
            if(arr.hasOwnProperty(key) && arr[i].name == arr[i + 1].name)
            {
                    arr2[i] = arr.slice(key);
            }
        }
    }

    return arr2;
}

var arr3 = getNewArray(arr).sort();

Solution

  • var getCountry = function (country) {
        var out = [];
        for (var i = 0, len = arr.length; i < len; i++)
            if (arr[i].country === country) out.push(arr[i]);
        return out;
    };
    

    Demo: http://jsfiddle.net/YwytD/1/