首页 > 其他分享 >编写高质量代码(手撕代码)

编写高质量代码(手撕代码)

时间:2024-11-07 19:19:39浏览次数:3  
标签:function arr res 代码 高质量 item let forEach 编写

首先上几个面试题:(真难)

1. 手写函数实现数组扁平化(只减少一级嵌套)

思路:

      function flatten(arr) {
        let res = [];
        arr.forEach((item) => {
          if (Array.isArray(item)) {
            item.forEach((e) => res.push(e));
          } else {
            res.push(item);
          }
        });
        return res;
      }
      console.log(flatten2([1, [2, [3]], 4]));
      function flatten2(arr) {
        let res = [];
        arr.forEach((item) => {
          res = res.concat(item);
        });
        return res;
      }

实现数组深度扁平化

      //   深度拍平
      function flattenDeep1(arr) {
        let res = [];
        arr.forEach((item) => {
          if (Array.isArray(item)) {
            let flatItem = flattenDeep1(item);
            flatItem.forEach((e) => res.push(e));
          } else {
            res.push(item);
          }
        });
        return res;
      }

      function flattenDeep2(arr) {
        let res = [];
        arr.forEach((item) => {
          if (Array.isArray(item)) {
            let flatArr = flattenDeep2(item);
            res = res.concat(flatArr);
          } else {
            res = res.concat(item);
          }
        });
        return res;
      }

2. 手写代码表示 new 的过程

标签:function,arr,res,代码,高质量,item,let,forEach,编写
From: https://www.cnblogs.com/gardenOfCicy/p/18533704

相关文章

  • 用C语言代码输出三个数
    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?已知:1、三位数2、1-43、各不相同输出:1、有多少个这样的三位数2、依次输出#include<stdio.h>intmain(){for(intb=1;b<5;b++)  {   for(ints=1;s<5;s++)    ......
  • 【Java深度揭秘】掌握SPI机制,让你的代码设计更优雅!
    SPI(ServiceProviderInterface)机制是Java中一种服务发现和加载的机制,它允许第三方为应用程序提供实现。SPI机制广泛应用于Java标准库以及各种框架中,如JDBC、JNDI等。SPI机制的基本概念接口定义:首先定义一个接口,这个接口规定了服务提供者需要实现的方法。配置文件:在META-INF/......
  • 【Java开发者必看】揭秘Java访问磁盘文件机制,让你的代码效率翻倍!
    在Java中,访问磁盘文件通常使用java.io包中的类。这些类提供了多种方式来读取和写入文件。以下是一些常用的类及其用法:1. FileReader和FileWriter解释:FileReader用于读取字符文件。FileWriter用于写入字符文件。示例代码:importjava.io.FileReader;importjava.io.File......
  • [C#] 代码规范
    一、接口化多使用依赖注入,减少静态类的使用。例如工具类的日志、文件压缩、服务器时间、相机等等,以日志为例,定义日志的接口,日志的实现可能是log4net、Serilog、NLog,也可能是自行实现,定义接口ILog,使用依赖注入获取单例,后期切换新的日志实现时,只需要实现日志接口并注入到IOC容......
  • java SPI 代码示例
    SPI是ServiceProviderInterface的缩写,中文解释为服务提供发现接口SPI是一种「基于接口的编程+策略模式+配置文件」组合实现的动态加载机制,可以根据逻辑加载不通的接口实现实现步骤:在类路径下的 META-INF/services目录下,创建以服务接口的"全限定名"命名的文件,文......
  • 代码随想录一刷day7 哈希表day1
    遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。常见三种实现哈希表的数据结构:数组set集合map映射下面是setmap的红黑树是一种平衡二叉搜索树,所以k......
  • Reviewbot 开源 | 为什么我们要打造自己的代码审查服务?
    Reviewbot是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务,方便做codereview/静态检查,以及自定义工程规范的落地。静态检查不是个新鲜事。我记得早在几年前,我们就调研并使用过sonarqube做静态检查,但当时并没有大范围的推广。主要原因在于,一是发现的问题多......
  • shell脚本入门——流程控制方法和代码
    Shell脚本是一种用于自动化任务和管理系统的强大工具。在编写Shell脚本时,流程控制(如条件判断、循环等)是最基础也是最重要的部分之一。以下是一些常用的Shell流程控制结构:1.条件判断(if语句)Shell脚本中的if语句用于根据条件判断执行不同的代码块。#!/bin/bash#判断文件......
  • 应届生必看!23 个高质量 C++ 项目推荐,校招简历秒加分
    大家好,我是小康。最近,不少同学私信我,临近毕业忙着找工作,想问有没有推荐的C++项目,既能练手又能让简历更出彩。我也想起自己当年毕业时同样的焦虑,知道作为C++后端开发的求职者,有几个实际且吸引人的项目,能在面试时为自己增添不少分量。今天就结合我的经验,给大家推荐几个项目,都......
  • 驭码上新,AI Code Review、基于代码库的知识问答,让研发起飞
    极狐GitLabAI产品驭码CodeRider发布最新版本,带来了多项AI赋能软件研发的重大功能。重磅发布基于代码库的知识问答:智能解答项目代码相关问题,提升协作效率;让新员工快速了解、上手项目,缩短培养周期。AICodeReview:已配置项目可在用户提交MR时自动触发代码审核,支持一键接......