Javascript 连接JS多维数组中的字段,排序,然后创建不同类型的JS对象数组

Javascript 连接JS多维数组中的字段,排序,然后创建不同类型的JS对象数组,javascript,arrays,sorting,multidimensional-array,javascript-objects,Javascript,Arrays,Sorting,Multidimensional Array,Javascript Objects,我想要一个如下所示的数组: var contacts = [ {account: 'Acme', firstName: 'John', lastName: 'Snow'}, {account: 'Metal Industries', firstName: 'Ted', lastName: 'Smith'} ]; 注意:联系人可以具有相同的帐户名 并创建一个函数,将数据转换为具有以下结构的对象,该结构类似于一个映射,其中键是帐户名,值是按字母顺序排列的全名数组,如下所示: var

我想要一个如下所示的数组:

var contacts = [
    {account: 'Acme', firstName: 'John', lastName: 'Snow'},
    {account: 'Metal Industries', firstName: 'Ted', lastName: 'Smith'}
];
注意:联系人可以具有相同的帐户名

并创建一个函数,将数据转换为具有以下结构的对象,该结构类似于一个映射,其中键是帐户名,值是按字母顺序排列的全名数组,如下所示:

var acctContactObject = {
    'Acme': ['John Snow','Kyle Johnson','Sara Butler'],
    'HiTech Corp': ['Arnold Williams','Jason Fernandez','Sam Johnson']
};
我不确定我是否采取了正确的方法,并希望在继续之前寻求一些明智的建议。以下是我到目前为止所写的内容,以及我要去的地方的“伪代码”

function convertAccountArrayToObject(contacts){
            this.account = contacts.account;
            this.firstName = contacts.firstName;
            this.lastName = contacts.lastName;
            this.sort(function(a, b) {
            return a.account.localeCompare(b.account);
            });
            var aco = new acctContactObject();
            var name;
            var nameArray = [];
            for(var member of this){
            //this is where I get stuck
            //I could create a new array to hold the account with full name
            //but somehow need to add them to an array that I can sort on 
            //
            //assuming I used an intermediate array...
            //create new acctContactObject
            //For acct in intermediate array 
            //add name to another single array and sort alphabetically
            //put acct name and sorted list of names into new object
            //after end of loop, return object
我一直在搜索是否有办法对多维数组进行二次排序,但没有找到我要查找的内容。我还提到了“合并”属性,但不确定这是否允许我正确地连接名字和姓氏的值


我不做很多JS,至少不是这种类型的,所以如果知道我在正确的轨道上,我会很感激。如有任何建议或指导,以更清洁的方式处理此问题,将不胜感激

最简单的方法如下

注意:我修改了联系人,以包括相同帐户名的情况

    var contacts = [
        {account: 'Acme', firstName: 'John', lastName: 'Snow'},
        {account: 'Metal Industries', firstName: 'Ted', lastName: 'Smith'},
        {account: 'Metal Industries', firstName: 'Bolt', lastName: 'Coder'}
    ];

    function convertAccountArrayToObject(contacts){
        var returnObj={},key;

        contacts.forEach(function(v,i){
            key=v.account;
            if(!returnObj[key]){

                returnObj[key]=[];

            }
            returnObj[key].push(v.firstName+" "+v.lastName);
        });
        return returnObj;  
    }

 acctContactObject=convertAccountArrayToObject(contacts);
如果你觉得这有帮助,请投票