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);
如果你觉得这有帮助,请投票