如何把物品放入分组阵列,其中由一个特定的键进行了分组 [英] How to put items into grouped arrays where grouped by a particular key

查看:109
本文介绍了如何把物品放入分组阵列,其中由一个特定的键进行了分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在JS对象pretty新的,所以我需要一些帮助。我有以下阵列:

I am pretty new in Objects in JS, so I will need some help. I have the following Array:

var persons = [
    { fname : 'Steven', lname : 'Jameson', age : 20 },
    { fname : 'George', lname : 'Thrump', age : 40 },
    { fname : 'Peter', lname : 'Jacobs', age : 60 },
    { fname : 'Peter', lname : 'Thrump', age : 20 },
    { fname : 'Steven', lname : 'Henderson', age : 40 },
    { fname : 'John', lname : 'Jacobs', age : 30 },
    { fname : 'Steven', lname : 'Thrump', age : 50 },
    { fname : 'George', lname : 'Peterson', age : 40 },
    { fname : 'Peter', lname : 'Jameson', age : 60 }
];

我需要排序给定属性的信息。我试着函数(数组,'财产')。在我而言这将是功能(人,'FNAME')。我达到目的的钥匙在不同的名称和密钥存储每个人都使用该名称的信息。例如:

I need to sort the information by a given property. I've tried with function( array, 'property' ). In my case it will be function(persons, 'fname'). I have to achieve an Object with keys the different names and that keys to store the information about everyone with that name. For example:

Object {
    Steven : everyone with first name Steven,
    George : everyone with first name George,
    Peter : everyone with first name Peter,
    John : everyone with first name John
}

我做到这一点:

function group( array, property ) {
        var object = {};

        for (var i = 0; i < persons.length; i++) {
            object[persons[i][property]] = [];

            object[persons[i][property]].push(persons[i])
        };
    };

创建具有不同的名称作为关键字的对象,并给他们数组值。然后,我坚持,不知道下一步该怎么做?有人可以帮助,如果他有几分钟来解释一下。

Creating the object with the different names as keys, and giving them Array as value. And then I am stuck and don't know what to do next ? Can someone help and if he has few minutes to explain a bit.

先谢谢了。

推荐答案

唯一的问题似乎与这一行:

The only issue seems to be with this line:

object[persons[i][property]] = [];

据执行每次迭代,加1元之前重置每个阵列回空。它只是需要设置前的状态:

It executes for every iteration, resetting each Array back to empty before adding 1 element. It just needs a condition before setting:

if (!(persons[i][property] in object))
    object[persons[i][property] = [];

object[persons[i][property].push(persons[i]);

这篇关于如何把物品放入分组阵列,其中由一个特定的键进行了分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆