【问题标题】:javascript transfer array to a new array [duplicate]javascript将数组传输到新数组[重复]
【发布时间】:2021-01-11 06:23:49
【问题描述】:

我目前有一个数组:

[
    {
        Id: 14,
        userRoleId: 2,
        userResourceId: 2,
        userActionId: 2,
        userScopeId: 2,
    },
    {
        Id: 15,
        userRoleId: 3,
        userResourceId: 2,
        userActionId: 2,
        userScopeId: 3,
    },
    {
        Id: 16,
        userRoleId: 4,
        userResourceId: 2,
        userActionId: 2,
        userScopeId: 3,
    },
    {
        Id: 17,
        userRoleId: 5,
        userResourceId: 2,
        userActionId: 2,
        userScopeId: 1,
    }
]

如何根据 userScopeId 生成新数组?

数组名称为userScopeArrayuserScopeId,数组内容为userScopeId匹配内容。

所以它会是这样的:

userScopeIdArray1:
[
    { Id: 17, userRoleId: 5, userResourceId: 2, userActionId: 2 }
]

userScopeIdArray2:
[
    { Id: 14, userRoleId: 2, userResourceId: 2, userActionId: 2 }
]

userScopeIdArray3:
[
    { Id: 15, userRoleId: 3, userResourceId: 2, userActionId: 2 },
    { Id: 16, userRoleId: 4, userResourceId: 2, userActionId: 2,}
]

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    您可以使用Array#reduce

    const arr = [ { Id: 14, userRoleId: 2, userResourceId: 2, userActionId: 2, userScopeId: 2, }, { Id: 15, userRoleId: 3, userResourceId: 2, userActionId: 2, userScopeId: 3, }, { Id: 16, userRoleId: 4, userResourceId: 2, userActionId: 2, userScopeId: 3, }, { Id: 17, userRoleId: 5, userResourceId: 2, userActionId: 2, userScopeId: 1, } ];
    
    let res = arr.reduce((acc,cur)=>{
        let id = 'userScopeId'+cur['userScopeId'];
        acc[id] = acc[id]||[];
        acc[id].push(cur);
        return acc;
    },{});
    
    console.log(res)

    【讨论】:

      【解决方案2】:

      您可以使用reduce 数组方法来构建此结果。

      let input = [
          {
              Id: 14,
              userRoleId: 2,
              userResourceId: 2,
              userActionId: 2,
              userScopeId: 2,
          },
          {
              Id: 15,
              userRoleId: 3,
              userResourceId: 2,
              userActionId: 2,
              userScopeId: 3,
          },
          {
              Id: 16,
              userRoleId: 4,
              userResourceId: 2,
              userActionId: 2,
              userScopeId: 3,
          },
          {
              Id: 17,
              userRoleId: 5,
              userResourceId: 2,
              userActionId: 2,
              userScopeId: 1,
          }
      ];
      
      let output = input.reduce((acc, val) => {
        let key = "userScopeIdArray" + val.userScopeId;
        if(acc[key]){
          acc[key].push(val);
        } else{
          acc[key] = [val];
        }
        return acc;
      }, {});
      
      console.log(output);

      【讨论】:

        猜你喜欢
        • 2013-03-21
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多