如何从对象文字数组中切片数组?

Ian*_*ell 5 javascript arrays sorting object-literal slice

我有这个数组,其中每个索引包含一个对象文字.所有对象文字都具有相同的属性.一些对象文字对于给定的属性具有相同的值,我想创建一个包含那些对象文字的新数组.

我的想法是对数组进行排序,并将其切成新的数组......

这是数组:

var arr = [];

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

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

arr[2] =
{
    country: "United States",
    num: 7
};
Run Code Online (Sandbox Code Playgroud)


所以,我想创建一个新的数组,只包含属性country为"United States"的那些对象.到目前为止,这是我的疯狂想法,但这不起作用:

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();
Run Code Online (Sandbox Code Playgroud)

elc*_*nrs 2

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;
};
Run Code Online (Sandbox Code Playgroud)

演示: http: //jsfiddle.net/YwytD/1/