Comment puis-je tranche un tableau à partir d'un tableau de littéraux d'objet?

J'ai ce tableau, dans lequel chaque index contient un objet littéral. Tous les objets littéraux ont les mêmes propriétés. Certains objets littéraux ont la même valeur pour une propriété donnée, et je veux créer un nouveau tableau contenant seulement ces objets littéraux.

Mon idée est de trier le tableau, et coupez-le en tranches dans un nouveau tableau...

Voici le tableau:

var arr = [];

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

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

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


Donc, je veux créer un nouveau tableau contenant uniquement les objets où la propriété country est "États-unis". C'est mon idée folle jusqu'à présent, qui ne fonctionne pas:

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();
Pourriez-vous préciser votre question: votre exemple avec les "États-unis" donne l'impression que vous voulez spécifier un pays et de ne renvoyer que les éléments avec ce pays, mais votre premier paragraphe semble dire le résultat devrait inclure tous les pays qui ont des doublons. Certaines réponses ont disparu d'une façon, les autres (et j'ai mis à jour ma réponse à couvrir à la fois). Peut-être que vous pourriez mettre à jour votre exemple de tableau pour inclure plus de deux pays?
Je suis désolé, je suis en train d'essayer de retourner un tableau qui ne contient que des valeurs correspondantes. Et plus récemment, il s'avère que j'ai besoin d'un tel algorithme qui retourne plusieurs tableaux à partir d'un tableau, chaque tableau contenant uniquement les valeurs correspondantes spécifié..

OriginalL'auteur Ian Campbell | 2012-05-31