上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

最近没有产出,分享一个面试题,希望gg们各显神通

[复制链接]
  • TA的每日心情
    开心
    2024-7-16 15:40
  • 签到天数: 276 天

    [LV.8]以坛为家I

    115

    主题

    460

    回帖

    997

    积分

    荣誉开发者

    积分
    997

    荣誉开发者油中2周年卓越贡献生态建设者油中3周年

    发表于 2023-9-11 23:19:36 | 显示全部楼层 | 阅读模式
    悬赏50油猫币未解决

    本帖最后由 wwwwwllllk 于 2023-9-11 23:20 编辑

    const dataSource = [
      {value: "1", groupId: 'a'},
      {value: "15", groupId: 'b'},
      {value: "7", groupId: 'a'},
      {value: "9", groupId: 'c'},
      {value: "5", groupId: 'b'},
      {value: "11"}
    ];
    
    把上面的dataSource数组输出为
    
    [
      [ { value: '1', groupId: 'a' }, { value: '7', groupId: 'a' } ],
      [ { value: '5', groupId: 'b' }, { value: '15', groupId: 'b' } ],
      [ { value: '9', groupId: 'c' } ],
      [ { value: '11' } ]
    ]

    gg们可以给自己限时10分钟,然后不要借助任何工具就自己手写

    接脚本定制
    I frequently record, because want to leave something.
  • TA的每日心情
    奋斗
    2023-9-14 07:44
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    3

    回帖

    6

    积分

    荣誉开发者

    积分
    6

    荣誉开发者油中2周年新人报道喜迎中秋

    发表于 2023-9-11 23:51:47 | 显示全部楼层
    本帖最后由 JKstring 于 2023-9-12 00:47 编辑

    const dataSource = [
        { value: "1", groupId: 'a' },
        { value: "15", groupId: 'b' },
        { value: "7", groupId: 'a' },
        { value: "9", groupId: 'c' },
        { value: "5", groupId: 'b' },
        { value: "11" }
    ];

    const formattedData = dataSource.sort((a, b) => {
        if (a.groupId < b.groupId) {
            return -1;
        } else if (a.groupId > b.groupId) {
            return 1;
        } else {
            return a.value - b.value;
        }
    }).reduce((acc, item) => {
        const group = acc.find(group => group[0].groupId === item.groupId);

        if (group) {
            group.push(item);
        } else {
            acc.push([item]);
        }

        return acc;
    }, []);

    console.log(formattedData);
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 814 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1557

    积分

    荣誉开发者

    积分
    1557

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-9-12 00:48:14 | 显示全部楼层
    1. const dataSource = [
    2.   {value: "1", groupId: 'a'},
    3.   {value: "15", groupId: 'b'},
    4.   {value: "7", groupId: 'a'},
    5.   {value: "9", groupId: 'c'},
    6.   {value: "5", groupId: 'b'},
    7.   {value: "11"}
    8. ];
    9. const temp=dataSource.reduce((obj,data)=>{
    10.     const {groupId}=data
    11.     obj[groupId]=obj[groupId]||[]
    12.     obj[groupId].push(data)
    13.     return obj
    14. },{})
    15. Object.values(temp)
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-16 15:40
  • 签到天数: 276 天

    [LV.8]以坛为家I

    115

    主题

    460

    回帖

    997

    积分

    荣誉开发者

    积分
    997

    荣誉开发者油中2周年卓越贡献生态建设者油中3周年

    发表于 2023-9-12 08:33:12 | 显示全部楼层

    每个value也要从小到大排列
    接脚本定制
    I frequently record, because want to leave something.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 814 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1557

    积分

    荣誉开发者

    积分
    1557

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-9-12 08:57:29 | 显示全部楼层
    wwwwwllllk 发表于 2023-9-12 08:33
    每个value也要从小到大排列
    1. Object.values(temp).map(i=>i.sort((a,b)=>a.value-b.value))
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4197

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-9-12 11:34:23 | 显示全部楼层

    gpt-4来咯

    const dataSource = [
      {value: "1", groupId: 'a'},
      {value: "15", groupId: 'b'},
      {value: "7", groupId: 'a'},
      {value: "9", groupId: 'c'},
      {value: "5", groupId: 'b'},
      {value: "11"}
    ];
    
    let result = dataSource.reduce((acc, cur) => {
      let targetIndex = acc.findIndex(arr => arr[0].groupId === cur.groupId);
    
      if (targetIndex !== -1) {
        acc[targetIndex].push(cur);
      } else {
        acc.push([cur]);
      }
    
      return acc;
    }, []);
    
    console.log(result);
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4197

    回帖

    4061

    积分

    管理员

    积分
    4061

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-9-12 11:48:23 | 显示全部楼层

    脚本猫ide写的

        const dataSource = [
            { value: "1", groupId: 'a' },
            { value: "15", groupId: 'b' },
            { value: "7", groupId: 'a' },
            { value: "9", groupId: 'c' },
            { value: "5", groupId: 'b' },
            { value: "11" }
        ];
    
        let result = [];
    
        let empty = [];
    
        for (let i = 0; i < dataSource.length; i++) {
            let val = dataSource[i];
            if (!val.groupId) {
                empty.push(val);
                continue;
            }
            let index = val.groupId.charCodeAt(0) - 97;
            if (!result[index]) {
                result[index] = [];
            }
            result[index].push(val);
        }
        result.push(empty);
        for (let i = 0; i < result.length; i++) {
            console.log(result[i]);
            result[i] = result[i].sort((a, b) => a.value - b.value);
        }
    
        console.log(result);
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-24 18:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    24

    主题

    31

    回帖

    281

    积分

    荣誉开发者

    积分
    281

    荣誉开发者油中2周年生态建设者喜迎中秋

    发表于 2023-9-12 13:31:36 | 显示全部楼层

    本帖最后由 Yiero 于 2023-9-12 13:40 编辑

    const dataSource = [
        { value: "1", groupId: 'a' },
        { value: "15", groupId: 'b' },
        { value: "7", groupId: 'a' },
        { value: "9", groupId: 'c' },
        { value: "5", groupId: 'b' },
        { value: "11" }
    ];
    
    dataSource.sort( ( a, b ) => a.value - b.value );
    const dataMap = new Map();
    dataSource.forEach( ( data ) => {
        const groupArray = dataMap.get( data.groupId ) || dataMap.set( data.groupId, [] ).get( data.groupId );
        groupArray.push( data );
    } )
    const result = Array.from( dataMap.values() );
    console.log( result );
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2024-4-24 18:57
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    24

    主题

    31

    回帖

    281

    积分

    荣誉开发者

    积分
    281

    荣誉开发者油中2周年生态建设者喜迎中秋

    发表于 2023-9-24 17:11:55 | 显示全部楼层

    这几天刚学的新东西, 实验性内容(

    const dataSource = [
        { value: "1", groupId: 'a' },
        { value: "15", groupId: 'b' },
        { value: "7", groupId: 'a' },
        { value: "9", groupId: 'c' },
        { value: "5", groupId: 'b' },
        { value: "11" }
    ];
    
    const result = Object.values( 
        Object.groupBy( 
            dataSource.toSorted( ( a, b ) => a.value - b.value ), 
            ( item ) => item.groupId 
        ) 
    );
    
    console.log( result );
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表