Javascript简单对象排序

Javascript简单对象排序,javascript,arrays,sorting,object,filter,Javascript,Arrays,Sorting,Object,Filter,我对JavaScript非常陌生。我最近在学习数组方法 我想做的事 如何使用一些数组方法(过滤器、映射等)或任何其他可行的方法将问题对象转换为结果对象 我已经用工作示例尝试过的内容 let question = { rows: [ { no: 1, content: "a" }, { no: 2, content: "d" }, { no: 1, content: "b" }, { no: 3, content: "e" }, { no: 2, con

我对JavaScript非常陌生。我最近在学习数组方法

我想做的事

如何使用一些数组方法(过滤器、映射等)或任何其他可行的方法将问题对象转换为结果对象

我已经用工作示例尝试过的内容

let question = {
  rows: [
    { no: 1, content: "a" },
    { no: 2, content: "d" },
    { no: 1, content: "b" },
    { no: 3, content: "e" },
    { no: 2, content: "c" },
    { no: 4, content: "f" },
    { no: 4, content: "g" },
  ]
};


let results = {
    rows: [
        [{ no: 1, content: "a" }, { no: 1, content: "b" }],
        [{ no: 2, content: "c" }, { no: 2, content: "d" }],
        [{ no: 3, content: "e" }],
        [{ no: 4, content: "f" }, { no: 4, content: "g" }]
    ] 
}
预期结果


实际结果

可以这样做

让问题={
行:[
{no:1,内容:“a”},
{no:2,内容:“d”},
{no:1,内容:“b”},
{no:3,内容:“e”},
{no:2,内容:“c”},
{no:4,内容:“f”},
{no:4,内容:“g”}
]
};
//创建一个结果对象
让结果={};
//施展魔法
result.rows=[…新集合(question.rows.map(row=>row.no))].map(key=>question.rows.filter(row=>row.no==key));

控制台日志(结果)当您需要更改数据结构时,这称为解析

你可以不用任何花哨的方法来做这件事。步骤:

  • 创建一个唯一的数组
  • 如果子数组不存在,则创建子数组
  • 将ITEN添加到其子阵列中
  • 让问题={
    行:[
    {no:1,内容:“a”},
    {no:2,内容:“d”},
    {no:1,内容:“b”},
    {no:3,内容:“e”},
    {no:2,内容:“c”},
    {no:4,内容:“f”},
    {no:4,内容:“g”},
    ]
    };
    //创建一个唯一的数组
    让结果={
    行:[]
    };
    for(让键输入有问题的行){
    变量项=问题。行[键];
    var编号=项目编号-1;
    //如果子数组不存在,则创建子数组
    如果(!results.rows[no])results.rows[no]=[];
    //将ITEN添加到其子阵列中
    结果。行[no]。推送(项);
    }
    控制台日志(结果)您可以使用键通过减少数组来创建相同的组,从而从中获取a和值

    函数分组依据(数组、键){
    返回Array.from(数组
    .reduce((m,o)=>m.set(o[key],…(m.get(o[key])| |[]),o]),新映射)
    .values()
    );
    }
    让问题={行:[{no:1,内容:“a”},{no:2,内容:“d”},{no:1,内容:“b”},{no:3,内容:“e”},{no:2,内容:“c”},{no:4,内容:“f”},{no:4,内容:“g”},
    结果={rows:groupBy(question.rows,'no')};
    控制台日志(结果)
    
    .as控制台包装{max height:100%!important;top:0;}
    如何解决此问题?你有什么想法吗?有什么尝试吗?虽然你是JS新手,但在StackOverflow中,我们希望寻求解决方案的人付出最小的努力,因为我们不是来编写完整的解决方案/免费代码的,我们是来帮助你的。所以,请将您当前的代码发布到您试图解决的地方,我们将很乐意帮助您完成您的功能。对不起,伙计们。这也是我第一次问有关StackOverflow的问题。我唯一的想法是,我只知道也许我需要使用过滤器和映射数组方法。如果我有一些想法,我会更新一些代码。想想你想做什么,你想把每个对象放在问题行数组中,并将其附加到结果行数组中吗?你可以简单地交换它们