粉丝49获赞310

大家好,最近比较忙,所以好久没有更新 far report 方案系列的视频, 后台也有许多朋友私信或者说直接在微信上催我更新,不过大家不用担心,嗯,最近的已经忙完了,后续的更新会逐步稳定下来。 所以今天呢,我们先来一个开胃小菜。呃,一个在许多 erp 系统上非常常见的一个功能。 我们在业务系统实际操作过程中,我们经常需要跨表单进行一个复制粘贴的一个填写,比如我在一个 表中,我要一次性复制十几个字段的值,然后在另外的一个填报表中一次性录入十几个字段。呃,常规操作 呢,我们需要一个一个的复制粘贴,但是呢,也有一些系统,它是支持同时复制粘贴十几个字段, firepot 本身呢是不支持这样的一个功能。今天呢,我们分享一个实现起来非常简单的一个方案, 老规矩,我们先来看一下这个效果,我们的系我们这这边有一个明细表,订单 id 定产品 id、 单价、数量、进价和折扣。另外我们这边还准备了一个填报表, 呃,填报表的话,填的同样是这几个字段,我为了模拟的话,我这里设计的比较简单一点。然后我们呃常规操作的话,我们大部分在填写,比如我想要再将这一条数据的部分字段复制过来,然后粘贴到这里的话,常规操作我们都是比如 订单 id, 我们手动复制一个,然后在这里填写,然后 ctrl c、 ctrl v 这样一个填写。那么有些系统的话,它是支持多个自断的复制,比如我们今天实现的这个方案, 像这一条,我们点击后边的一个复制,然后在这里直接点击粘贴,他就可以同时将多个字段复制粘贴过来,我们再换一个数据,这个幺零零七的数据我们复制,然后在这里快速粘贴就可以粘贴过来。 这个操作其实非常的简单,我们来看一下啊,就是我们常规的明细报表,后面我们增加一个 这个按钮,当然是文字模拟的一个按钮,然后我们给他一个超级链接,超级链接这里的话就很简单的一段 gs, 重点其实是在这里的这个 cut test 这个参数的一个值,我们在这里通过 contact name, 然后将我们的字段拼接成一个 jason 的一个支付串, 然后拼接完之后的话,我们相当于我们点击这个,就将我们的呃这些字段拼接成字符串之后复制给我们的剪切版,我们现在呃我们复制一下吧,我们在这里再增加一个按钮,复制按钮, 然后我们增加一个超级链接,选择 g s 脚本, 我们准备一下我们的这个代码,首先是这个公式, 公式的话我们这里参数名叫 cut test, 直的话选择公式,然后插入,我们来解释一下,就是这里好像看着这个不太舒服,我们看着这个,看 这个的话是一翻转的字符串拼接函数,然后我们拼接 jason 的一个对象的话,首先是大括号,然后 k, 然后 value, 这个的话 b 二就是这个单元格里的值, 然后加上逗号,然后第二个 k, 第二个 value, 然后单加这种这个格式大家在实际过程中只需要替换这一点就好了。 然后我们的在哎怎么点了一个,然后 g s 的话,我们这里同样写好的 g s 复制过来, 它的话调用的是这个 clipboard 这个浏览器的一个函数,然后叫 write text, 这个通过这个方法的话,就可以将我们的内容,我们上面传过来的内容 复复制到我们的剪切版中,我们来试一下线,我们点击保存重新,我们点一下这个,此时的话我们去 ctrl v 的话,就可以把他的一个接色对象打印出来,比如我们跟 f 十啊,我们在这个控制台粘贴一下, 就是这样一个数据,比如我们现在在复制这个幺零零幺零的,我们点击复制这里再粘贴就是幺零零幺零的一个数据,这样的话我们相当于将这个字段拼接成字符串,然后复制到我们的剪切板中,然后我们再在这个填报里面 再增加一个按钮,这里的话添加一个按钮,一键粘贴,一键粘贴,然后他的话是再增加一个点击事件,这个事件我们也提前写好的代码, 就是它是比较短的,它用的接口和刚刚写的其实接口也一样,嗯,它是 red text, 这样的话 啊,这个呢是是 read test, 然后读取到剪切版中的内容,之后的话,我们将这个剪切版的内容做一个序列化, jc 的序列化,然后 我们通过这个对象获取到他的订单 id, 然后通过这个 set seal value 就是给单元格复值, 这里的话 b 一单元格就是订单 id 这个所在单元格,然后 b 二的话是产品 id 所在单元格,通过这段 gs 的话,相当于我们将嗯我们获取到的建设对象的值粘贴过来,我们是我们来预览一下, 这里我们点击复制,然后在这里我们点击一键粘贴,就可以看到粘贴过来了,我换一个数据一键粘贴, 这样的话这个功能就实现了。这个功能的话是非常简介简单,但是有些场景下是一个比较实用的一个功能,关于这个功能的, 嗯,更多的一个方案的描述,这里我的公众号里面是有发布,大家可以到公众号里面看一下内容。 然后的话有一点需要注意的,因为我们用到这个 cable 的这个接口,根据 m d n 的文档解释的话,它是有一定的兼容的问题。 我们通过这里可以看到这个 red text 的话,呃,像这个火狐的浏览器就不太支持,然后这个 red text 的话就好像都支持,就是这个 red 的话,火狐的一些浏览器可能不支持,所以大家在实际使用中也要看一下,如果不支持的话就建,如果大家很更多使用的火狐浏览器的话,就不建议大家去使用这个功能了 啊。最后的话,欢迎大家关注我的公众号,然后添加我的微信, 当然 b 站的话,大部分朋友看到我的视频基本上都是在 b 站看到的。嗯,同时呢我们又新增了这个抖音的一个账号,也叫磁石带数据技术,还有微信的一个视频号叫磁石带数据技术,大家都可以关注一下。 最后的话,本人的翻转论坛那个账号叫也叫 wibw, 大家可以进行关注,谢谢。

那么我们就开始学习我们这个单元格的拷贝啊,也是我们这节课的重点啊,拷贝方法, 好,我们新起一个新的函数, test test on, 呃,那么在讲这个方法之前呢,我们先来给大家手动演示一下什么是拷贝啊,其实我相信大家没有没有同学是不知道的,应该大家都知道啊, 就是复制粘贴啊,那么我们这里可以选中一篇单元格之后,点一下右键复制,或者 ctrl c 加 ctrl v 都可以,对吧?之后呢进行粘贴对不对? 这样就完成了我们的一个复制,其实呢,用我们的代码呢,也是一样的,他调用起来呢,也不复杂,也非常的简单。比如说我们现在是不是想对 a 一到 d 十二这一篇单元格进行拷贝,那么我们只需要表示出来, 表示出来这篇单元格区域,对吧? a 一到第十二这篇单元格点一个拷贝,那么想拷贝到哪个位置啊?那么这个地方就是写位置的,明白吧? 如果拷贝到铜表,那么我不需要去指定他是哪一个工作表,我可以直接还试用 rung 对象啊,告诉他我想拷贝到 h e 这个位置。好,那么这样就完成了一个拷 背啊,哎,看到没有,而且拷贝过来的时候,他会默认啊,这片单元格区域呢,就是单琴的激活区域,也就是他会默认选择在这一片单元格上面。 好,那么我可以拷贝到这里,我可不可以拷贝到其他地方呀?比如说我想拷贝到表示一下啊?第二个工作表里面的 a e 单元格, 这个是代表第二工作表啊,这个工作部下面的下标为二的工作表,也就是第一个、第二个、第三个,如果有第四个的话,那么就第一、第二、第三、第四,明白吧? 那么这个是,呃,还没讲过啊,大家知道这个是什么意思就可以了。目前来说的话,好,我们运行, 运行完了之后呢,我们到第二个工作表去看看有没有这个东西了,哎,我们会发现有了,对不对?他考过来, 他考过来。当然呢大家需要注意一下啊,我们呢是并不能在这个地方给他提供多个参数的,什么意思呢?也就是说我不能在这里告诉他,我想拷贝到, 哎这个位置,那么我想拷贝到多个位置,可不可以啊?是不可以的,明白吧? 嗯,就比如说这是一个位置,我我想同时拷贝到下一个位置,哎,第三个表里面,比如说第三个表里面,我这样写可不可以啊?哎,是不可以的,明白吧?他会报错,也就说这个拷贝的方法他 同时啊只能来一次,如果我希望拷贝到多个地方的话,那么我可以用循环的方式,是不是就解决了?比如说现在我们有一二三四四个工作表,我想拷贝到后面的每一个工作表都有一个,我们先把它清除一下, 我想拷贝到二三四,每一个表都拷贝一份这个内容,那么我们就可以来一个循环, ii 等于一, i 小于 四,小于等于四, i 加加,那么其实从二开始就可以了,对吧?因为第一个我们是不需要去处理的,那么这个时候我们是不是只需要做一个最简单的修改,把这 这个改为 i 就可以了,那么第一次我是放在第挨个,也就是第二个,对不对?第二次呢?我放第三,第四次。那么以这样的一个非常简单的小方法呀,我们就可以把每一个工作表都做一次循环和处理, 来,我们点一下,他就已经完成了,我们可以挨个看一下对不对?所有都有了 对不对?速度是非常的快的,哎,对于这样的小内容来说啊,数据是非常呃动的,速度是非常快的。当然呢,如果我们的工作表特别多,或者数据特别大, 那么这个拷贝方法他就没有这么快了啊,可能拷贝一个几万条的数据,拷贝到另外一个表,他可能需要一秒的时间,哎,这这 种感觉下来呢,就会比较慢好吧。嗯,那么这个拷贝这个方法呢,大家需要注意的啊,需要注意的呢,就是前面是拷贝的单元格目标,就是说我要对这一片单元格进行拷贝, 那么拷贝的这个方法括号里面呢,去写这个想要拷入的一个位置,那么我们并不需要给他提供一片单元格,我们只需要给他提供指定的一个单元格就可以了, 跟我们的这个是同理啊,虽然呢,我们同样可以提供给他这样的一篇单元格,对不对?那么顶粘贴他也貌似也是正常的,但其实呀,我们 只需要在这里复制以后,我们只需要去选中一下目标单元格的随意一个单元格就可以了。之后呢,我们点一下粘贴,哎,是不是他就会把其他的都零带填充进来了, 那么我们会发现啊,他会是左上角的这个位置进行一个开始,也就说简单理解呢,就是我们拷贝这个方法呢,前面需要是一个或者一片单元格区,后面呢只需要给他一个目标位置就可以了。 好吧。啊,那不就是这个拷贝的方法非常简单,对不对?虽然很重要,但是呢也很简单好吧。 呃,他只有一个参数啊,只有一个参数。 呃,那么其他的我们来看一看它的属性都有一些什么属性啊?它的属性呢?也比较重要啊,还有一个比较重要的方法,还有个 end。 end 也需要讲一讲。

呃,大家好,欢迎继续回来和我一起学习 g s 红编程教程,那么这一节课呢,是我们 g s 红哎金奖拼的第二章的第七节课啊,那么这节课我们要学习的内容是 软几顶靠背啊,那也就是单元格的一个拷贝啊,这么一个方法, 好,我们先打开我们的这个文档文件。呃,那么我们先看一下啊,还是同样的,我们先到我们的这个 wps 开放平台啊,一起来看一下这个软件 顶靠背啊这一个方法,那么他是将单元格区域复制到指定的区域或紧切版中啊,他是这么一个方法, 其实呢就类似于什么呢?类似于我们的这个,好,我们随便输一些纸啊,我们把这一篇单元格选中以后啊,我们点一个复制啊,复制,那么现在呢,他其实呢就在我们的这个紧切版中了啊, 这个就已经在我们紧切版中了之后我们点到谢特二或者谢特三哎,我们随便的去选中一个单元格顶右定紧粘贴,或者是 ctrl c 加 ctrl v 啊, ctrl c 加 ctrl v 这个复制粘贴啊,这么一个快捷键就 ok 了啊,他就是这么一个操作,那么我们需要通过代码的方式啊,来进行一个完成啊,那么在很多时候呢啊,我们确实是,呃,如果用这个代码的方式来完成 是可以省很多的事情的啊,好,那么我们来一起来看一下这个方法的一个详细的说明啊,好,他的呃, 来他的一个语法啊,我们直接来看他的一个语法,那么,哎,他是一个 range 对象啊,顶上一个拷贝啊,那么就可以了啊,那么拷贝它里面的这一个参数呢?是什么?哎,我们看一下,他这个参数呢,是可选 哎,是一个可选的指定区域要复制到的新区域,如果省略此参数啊, e t 会将区域复制到紧切版, 哎,也就是说,如果啊,你不给他参数啊,那么他就不执行粘贴操作啊,他只有一个拷贝啊,他只有一个拷贝,把他呃这个, 呃,把它放到这个复制到剪切板中,哎,那他只会进行这个操作。如果我们是想要做一个复制粘贴这样一整套的这么一个操作啊,我们就必须啊去给他写一个完整的,好,那么我们把这个他的一个视力的这么一个代码呀, 那我们直接复制一下,我们复制一下,在我们这个问文件里面,我们一起来写一下 test, 好,我们直接把它的这一段粘进来,哎,之后我们来看一下啊,它这一段代码是什么意思,哎,这个呢,是一个 et 的 这个副对象啊,我可 set, 哎,那也就是我们的这个工作表的一个对象啊,这个代表的是一个工作表的对象, atm set 一,也就说他把这个谢特一里面的单元格, a 一到 d 四啊,这么一片区域,也就 a 一到 d 四啊,也就这么一片区域啊,我们把这片区域啊,我们把它改成三版啊,一会容易看。 a 一到 d 四啊,就是这么一片单韵格, 哎,复制哎,进行了一个复制,那么他拷贝啊,拷贝到的位置呢?是 shit 二啊, shit 二 run, 哎,一五,哎,这个地方的一五一二三四五,哎,这个位置考不了这个位置,哎,是这样好,那么他为什么是这个位置呢?我们为什么只需要给他这么一个单元格,不需要给他这样一拼呢?哎,因为啊,我们的复制啊,大家 可以看一下啊,我们的复制,我们把这个点了一个复制,对吧?我们过来粘贴的时候啊,我们是不是只需要去选中一个单元格,而不是去选中一拼?那么如果我们选中一拼会发生什么呢?我们可以看一下啊,我们来粘贴的时候啊,哎,因为我顶着了啊,好复制, 那我们选一片,那么复制完以后,哎,我们选中的那片单元格是不是也是不在了,他给我们缩成这样一小块区域了,对吧? 哎,我们可以再来看一下啊,哎,我们选中这样一篇,我们右进顶粘贴,哎,大家发现没有,那么其实呢,我们选中一个单元格去粘贴啊,他这个剪切版内容不在啊,好,我们选中一个单元格来粘贴,他就会自 动吗?去给我们按这个区域的大小呀,去进行一个填充啊,他会自动去填充过去的,也就是说啊,如果我们是要靠这边哎去粘贴的话,我们只需要给他这个 a 单元格就可以了, 给他一个目标单元格,这个目标单元格呢,是这一片区域的左上角的第一个单元格就可以了啊,就可以了。好, 那么根据这个逻辑呢,我们是不是就可以做很多东西啊,比如说我们的一个合并啊,很多的这个工作部啊,或者工作表的一个内容 表格合并啊,那么我们在下节课啊,我们就拿这个案例来给大家讲一下啊,也就是用我们这个拷贝的一个方法,哎,还有我们,呃,已经学过了这个数组,还有前面的一个读之和写之, 到时候呢,我们就讲两种方式啊,一种呢是以这个拷贝啊,也就是复制粘贴的这么一个方式去写一个我们的批量合并我们的工作部,哎,还有我们一个工作表之后呢,还有一个呢,就是用这个数组复制的一个方法, 哎,去批量的去进行一个合并啊,到时候呢,我们再来对比一下这两个方法的优劣啊。 好,那么这就是呃,他的一个视力代码,那么,呃,我们自己重新来写一遍吧啊,因为他这样写的话, 其实也没必要写那么全啊,我们可以直接就这样就可以了啊, shit, 一般常规来说我比较喜欢这样去写啊, shit! shit 一 顶软件,对吧?我们要复制的区域啊,要复制的区域我们就给他一个 a 一到我们的多少呢? f 十五 f 十四啊, f 十四,我们只复制有内容就可以了啊。点拷贝 一顶拷贝 copy 啊,那么里面这一个代表的是我们将要拷贝的区域啊, 这个代表的是我们将要拷贝的区域哎,顶,拷贝拷贝括号里面的这个参数呢,是代表我们将要拷贝到了一个地方啊,我们必须必须给他一个完整的地方啊,就比如说啊,我们需要同一个工作部,对吧?如果要其他工作部也是 可以的啊,但呢,我们要给他这个工作部对象的一个名称,对吧,我们要把这个对象给他表示出来啊,对吧?就可以了,那么我们就 shit 三吧 d rung, 我们只需要给他一个单元格就可以了啊,这个是重点,这样就可以了,这就是我们的一个拷贝啊,单元格的拷贝。好,我们执行一下,哎,他说我错误了, shit 四,呃, shit 一点,哦,这样输错了好像是, 好,我们来看一下啊,哎,我们发现没, 我们清除掉啊,我们清除掉,重新来一次,重新来一次, 好,我们发现没有,呃,他复制过来了啊,并且呢,呃,一复制过来呢,就是一个选中这样的一个状态啊。好,那么这就是我们的一个小方法啊,那么为什么要单独的拿出来说呢?因为啊,我们做其实做很多操作的时候都用得到这一个方法, 这个方法的好处呢,就是他非常的简单啊,如果我们在处理这个表格数据不是特别多的这么一个情况下呢,用这个方法可以去进行一些条件汇总啊, 对吧?条件汇总或者是呃智能的拆分表格,哎,根据我们一个单元格的内容 判断,我们应该把这个数据放到,哎,哪一个表里面,或者是哪一个工作部里面去,哎,这些很灵活的一些操作都是可以做的。 好,那么我们就嗯在后面讲更多的一个应用啊。好,那么非常感谢大家的收听,我们这节课呢就给大家讲到这里,我们下节课再见。

大家好,今天的话我们继续分享一个 gs 实现快速复制多个字段的一个方案, 和昨天的分享的快速跨表单复制粘贴的一个功能非常类似,可以说这是他的前一步,是我们扩展一下思路, 这是报表上线之后,在用户使用过程中呢,会经常遇到用户要进行一部分数据的一个分享,比如我们分享某一行 这个明细表里某一行的数据,大多数情况的话用户都会选择截图,但是如果遇到字段比较多,就截不完整,也无法一次性截到所有的数据,这时候我们就希望可以给用户提供一个一键复制的一个按钮来实现这个功能。目前翻染的话是默认 不支持这样一个功能的哈。我们看一下我这里实现的一个 demo, 嗯,这样一段一个,嗯, 这样一个明细表,如果用户进行分享的话,大部分他们选择截图,他可以截一下前两行,截一下第一行,他这样的截的话,他会截 我们的序号,然后这个字段以及后面的值都可以截到。但是如果比如他要截第五行的一个值的话,他很有可能大就需要这样截,然后我换一种截图方式,他可能就需要这样截图,然后用圆圈标记一下第五行,这样的话, 呃,不是很方便。包括还有一种情况,就是我们比如我这里如果说字段字段比较多,我这里是通过放大 来实现,这段比较多的话,下面出现滚动条,这样的话他一一个页面其实是截不了,截截图无法将所有的数据都截截图下来,这样的话也不是很方便,这时候我们就需要我们这样一个功能, 比如我这里实现的这个叫复制带帽盒和换号服的,我们点击完之后我们找一个空白的 嗯,几十本,然后 ctrl v 粘贴,他就可以把对应的订单号,然后产品 id 就是上面的这个自断名以及后面的值,通过这个冒号以及他前面有一个画画符,然后进行一个粘贴。比如我这里在 复制一个第九行的内容,我们点击复制,然后粘贴,这就是第九行的内容。这个功能实现起来也 也是非常简单的,就是我们增加一个文本,嗯,增加单元格,里面增加一个文本,然后添加超级链接,选择 gs 脚本,脚本里的话,这个写的内容我也都列出来了,是一段 gs, 然后需要一个 cat text 的一个参数, 然后他的值的话就是他的一个字段名,然后嗯,他所在的一个单元格,然后换汉服,然后冒号,这些拼接就是最后拼接出来一个结果,就是类似于我们这样。 然后还有一个就是我们可以增加一个制表符,增加制表符就可以让客户直接把数据复制粘贴到 excel 里,比如我第第八行吗?第八行 我们点击,然后我们打开一个 excel 的话,这里我们点击粘贴就可以直接粘贴到这,我们再来演示一下,比如我在换到第十行,我们点击他就会直接粘贴到这里, 这样也方便客用户在使用过程中直接将数据粘贴到这个呃 excel 中,那这个方案其实也就加了一个斜斜杠 t 就是制表符。 那么今天分享就到这里,就是关于这个方案的话,大家可以扫码关注我的公众号,然后在公众号的推文中有具体的呃,这个方案包括我们的一个 demo 的模板都可以扫码进行一个领取, 欢迎大家关注公众号。好的,谢谢。

大家好,经过前面的学习,现在我们可以自己来写一个相对完善一点的函数来实现生拷贝, 毕竟前面说到的方法呢,都会有点局限,不然就是只可以拷贝一层的数据,或者就是没办法拷贝函数等等。我们这个视频要实现的呢,就是写一个函数,可以对 obj 这个对象呢,实现多层的生拷贝。大家看到这个对象哈,他既欠套了,数组 也有函数,我们可以实现对这个对象的生拷贝呢,就差不多了,我们这里只讨论数组对象,函数和一些基本的数据类型就足够了, 还有一些其他的类型,像 simple 等等呢,做法是差不多的,来写一个函数,一个叫 diglum 实现声拷贝的函数,要把备考 备的这个数据哈作为参数传进去。先来判断一下传进来的这个数据呢,是什么类型的,可以用 type of 来判断,判断一下 o data, 看它是不是等于 object, 通过 type of 来判断,如果是 object 的话,基本上呢就是对象,宿主或者烂,对吧,虽然呢,还要把烂给它排除掉。 可以进到 if 里面呢,就是对象或者数组,具体是对象还是数组呢,还要来判断一下。先来声明一个变量,这里可以用一个判断数组的方法, 如果是数组呢,我们就新建一个空的数组,否则呢,他就是对象,我们就新建一个空的对象,我们新建的数组和对象就会在堆内存里面开辟了新的空间来存储这些数据, 对吧?然后我们通过 for in 来便利一下要拷贝的这些数据,再来通过 has own property 这个方法来判断一下 这个属性或者方法呢,他是不是对象自由的原型链上面的呢?就不算了,便利的这些数据他就有可能会欠套,多层的数组或者对象, 我们最主要要解决的就是这个多层欠套的问题,对吧?大家想一下,是不是可以用地规啊,再来调一下函数本身哈,把这些便利的每一项的数据呢,再给他传进去,单独再来判断一下。当然如果不是对象或者数组,我们一开始呢就直接把它返回出去就可以了, 便利过处理过的这些数据呢,我们就把它放到这个新的对象或者数组里面,再把它返回出去呢,我们就 可以得到这些拷贝过来的数据了,这样我们这个生拷贝的函数呢就写完了。大家可能有疑问哈,对象和数组多层嵌套拷贝的问题解决了,但是函数的拷贝这里有没有问题呢? 上一个视频专门给大家说了,我们普通函数的拷贝呢,其实直接就是重写这个函数就可以了,对吧?所以呢,前面这里他判断不是 object, 他就已经直接进入这个 s, 把这个函数呢给他返回出去了,你后面哪个对象要修改这个函数,其实已经是重写了,所以呢是不会影响另外一个的。 好,我们就来试一下这个函数呢好不好使,可不可以实现多层的生拷贝,并且呢拷贝函数声明一个 obj 二,然后呢通过我们写的这个方法来拷贝 一下 obj, 先来看一下这些数据呢,有没有成功拷贝过来,输出来看一下,没有问题,数据呢全部拷贝过来了,函数也拷贝过来了,那我们试一下修改 obj 里面的数据,看一下会不会影响到 obj 二的。直接来修改这个欠套的这个数组, 修改它的第零项,给它改成 play, 这两个对象呢,都输出来看一下, 刷新。先来看一下 o b j, 可以看到哈,它嵌套的这个数组里面的第一项呢,已经修改成 play 了。 再来看一下拷贝过来的 o b j 二,他数组里面的第一项呢还是 swing, 也就是说呢, o b j 他欠套的这个数组的修改并没有影响到 o b j 二,所以说 多层的拷贝呢,这里没有问题了。那函数的修改有没有问题呢?我们也试一下,这里来修改一下 o b j 它的 f n 函数,这里让它输出的呢是 disage。 再来分别执行一下 o b j 和 o b j 二的 f n 函数 没有问题,一个输出的是 age, 一个输出的是 name, 相互之间呢没有影响。好,这样我们通过这个函数呢,就可以实现相对完美一点的声拷贝了, 既可以拷贝多层嵌套的数组和对象,也可以拷贝函数,代码不多,但是呢,需要大家对地规理解的透彻一点就 ok 了。 还有一点小问题,就是循环引用的问题,这个呢,我们留到后面再来说,这个方法其实已经可以实现绝大部分情况的生拷贝了。好,这个视频呢,先到这里,感谢大家的收看。

大家好,欢迎观看 wps 接次红,从入门到放弃教程。我是本次课程的主讲老师曾显志。今天我们学习一杠十二课,那么这节课我们讲解第二种数据类型,叫做 string 的这种数据类型,也就是字符串数据类型, 那么在我们的 javascript 当中,表示文本的类型就是 string 及字符串,字符串的话一般是放在单引号,双引号或者是反引号当中,比如读取单元格当中的文本,就是一种常见的这个手法。那么好,我们接下来给大家演示一下, 那么好,我们创建一个 function 过程,我们这个样子吧,还是在这个我们还是简单的定一个变量,比方说写个 t, 然后呢 我把这个一二三写进去,大家猜一猜,这个是一个数字类型呢?还是一个字符串?我们断点设置在最后,然后运行,看一下 局部变量这边是不是最后显示的是 string, 如果你把它去掉,这样子的话,他肯定就是一个 number 的这种类型,所以只要你加了这个单引号或者是双引号的话,他其实都是什么字符串的类型,我们来试一下, 再来一个 a 二,写个写个 t 一吧,接下来我们再来一个写个 t 二,然后等于单引号,那我写个 a b c, 然后呢再来个 v a 二 t 三,等于这个反 引号的话,就是主键盘上一那个数字键左边,也就是 esc 退出键下面的那个,那么你按一下它就是这种反引号,那么比方说我再写个 a a a, 好,大家可以看一下,那么他们是不是我们刚才所说的这几种类型,按一下 f 十一,看一下是不是 string, string 三个都是 string, 那么最后一个 t 三,虽然我写的是反引号,但是最后它返回出来的都是什么呀?双引号, 也就是说最后他在局部变量都是以双引号的这种形式来给我们返回的,但是你的写法的话可以,这三种写法都可以,对吧?好,这是关于字符串他的一个写法。接下来我们再来看一下,就是关于他的一些特殊用法,比方说文本当中 有单印号怎么办?那么像这个我们来做一下,把这个复制这个 var t 四,把上面的给注视一下, 大家看一下,那么中间是不是有两个这种单引号,两侧的话是双引号,最后返回的结果会像什么样子呢?给大家看一下,那么是不是你看一下没有问题,但是如果你在这个里面 再加一个给大家看一下,再加一个啊,我随便加,比方加在这个里面。答应,好,假如说我是这个样子,大家想想会出错还是正常,大家看一下是不是没有问题?正常, 好,那么他不会出错的原因就在于,如果你想在字符串中间写 这种单一号,那你两侧的这个一定要是什么呀?双一号,那么如果你两侧都用这种单一号的话,他就会出错。我们来试一下,是不是比方说这个两侧都用单一号, 好像这个样子,那么我们运行看一下是不是就有问题,因为他认为这是一对,这是一对,然后这中间以为是变了,但是又不是对不对?所以大家一定要注意。那么当然还有一个反过来的这个写法,我们走 ctrl c, 然后 ctrl v t 五,然后呢我们反过来怎么写?比方说两侧是单引号,然后比方说把双引号放在中间 可不可以呢?好,我们运行一下 是不是也 是可以的?然后这个中间随便你怎么写这个单一号他也是可以的啊,然后在中间随便你写什么双一号他也是可以的,看一下是不是都可以。 ok, 这就是这样的一个效果, 大家看一下,就是文本当中的单引号你该怎么写?文本当中的双引号该怎么写?如果你要在文本当中体现双引号的话,在整个字符串你就使用单引号就可以了,那么再给大家讲一下,还有一个就是 关于反引号,是吧?再来一个写个 v a 二,然后 t 六等于反引号, 我们这样写看起来是非常的正常,没有什么问题,是吧?比方说看一下没有什么问题,这个反引号的话,他支持一些变量,然后呢比方说我来一些换行啊,这些 他行不行?比方说这个样子如果你想字符串换行的话,那么也是可以的。一二三,那么来走看一下,哎,你说看不出来好,看不出来的话,我们就再立即窗口来打印来看看,写个 console log, 然后把写个写个 t 六, ok, 那么再次来运行,看一下,是不是他就按照我们上面的这个布局,在下面对应显示,而上面的这些是做不到的,就是上面的这些是做不到的,我们来试一下嘛,我们把这个注视, 然后呢,比方说拿这个解除注视,你随便给他换一下号,你看绝对出错啊,你都不用看到没, 他绝对会出错,不能这个样子,但是你使用这这个反引号的话,他就支持换号,然后后面我们还会讲,他可以在这个两个反引号之间写一些变量,也是可以的,后面我们再说。好,接下来我们再讲一些 特殊字符的特殊意义,比方说这个我们来看一下 i'm ok, 然后呢我们在下边在这里写上,然后把上面的都给注释 好运行,看一下是不是看起来是没问题的,那么我就想在中间加一个引号,那么如果你把这根斜杠给取消,立刻会出错,但是你说我就想在这个后面挨的后面加一个双引号,那么 我不希望他有特殊的意义。其实这个双引号的话,就是引用字符穿的特殊意义,如果你这样直接写的话,他就以为这两个是一对, 而后面呢就没有,他是单的。但是如果你在前面给他加一根斜杠,他就把这个双引号转移成普通的符号,他就表示一个普通的双引号,并不是表示要引用字符串的意思,那么这个时候所以看起来非常的正常, 对吧?正常显示 ok。 同样下边的这几个常用符号,比方说制表符、换行符、回车符,我们不方便在我们的字符串里面那个录入,所以他用一些特殊的方法来完成。好比方说我们下面再来个 a i 二,那么我就写个 t 吧,如果你直接这么来写 没有问题,是吧?我们把这个也注视看一下,没有问题,那我希望是一个什么样换行的作用,比方说我写个这样子好,中间加一个 t, 我就希望这个 t 是起到 一个制表符的作用,不是换哈,因为 t 是制表符的意思,你就在他的前面加一个斜杠,是不是让他从普通的符号变成了这个特殊意义的符号呢?我们试一下, 看到没?是不是就出来了?中间为什么有一段就是因为加了制表符。好,那么接下来我们再来看另外两个,比方说我给他来一个 n 呢, n, 如果前面没有这个斜杠,他也是普通的这个 n。 看一下,如果你在前面加一根斜杠,那再运行这个时候是不是就换行了?哎,下面这个回车符号也是一样的。 好,现在我们运行这是普通的意思,然后加斜杠。 啊,好,这个时候他就具有回车符号的作用了,不过呢,在这个里面他没有体现出来,是吧?看到好像中间啥都没有。 好,那么这就是关于常见的特殊符号的一个使用,特别是这两个特殊符号。好,所以最后做一个总结,这个斜杠就是转移的意思,他可以将一个具有特殊意义的符号转换成普通的这个意思。比方说将这个 双引号转换成普通的一个符号,也可以将普通的字符转换成特殊意义的具有特殊意义的符号,也是可以的。 ok, 那么这节课关于数据类型,关于 string 数据类型,我们就讲解到这里,谢谢大家,我们下节课再见。

搬砖啦,今天来共享一下 gs 相关的知识点,第一大 大块 gs 文件的创建,第二大块是 gs 的引入方式,这一块其实在咱们讲到 h 前面四 s 的时候,也似曾相识的见到过,是不是?好,只不过方式不太一啊,等一下我们来详细说一下。 在讲这一块内容之前,我们先来扩展一个知识点,就是前端的三大块,人家问你别不知道对吧?哎,实际前端三大块我们已经学完了两大块, htm 和四 s html, 它主要是 学到的标签对吧?各种各样的标签,它的作用就是用来去承载我们所需要展示给用户的一些内容,但是这些内容承载完之后,他会按照他自己的格式,对不对啊?从上往下去展示,但是 有些时候我们需要让他这个并排呀,或者是按照我们自己的一个方式让他去展示给用户去看,这时候我们就需要通过 css 去进行外观的一个修饰,对吧? 那还有一点就是 gs, 比如说像我们在看到的轮播图,动态的,还有数据的提交啊,搜索功能啊等等,这些我们需要结合 gs 来实现啊,也就是前端三大块你学完之后,基本的咱们页面就可以写起来了啊。好,我们先来看第一大块 gs 文件的创建, 创建这一块呢,我们先来给他找一个位置,写上一个戒色圆码 啊,有需要的小伙伴后续也可以把这一块发给你啊。打开咱们自己的 vs 扣的,把这个 gs 文件托放进来,托放进 进来之后,在这个文件夹里面呢,我们就需要去创建三大块,对吧?浅断的三大块必不可少的,对不对?好,第一大块是我们需要去创建一个 htm 页面两种方式,第一种是你在这个地方直接去通过文本文档去创建,这个方式咱们讲过,对不对?好, 比如说我们来给他一个 ex 后缀名,一定要去,记得去改一下,这样我们就创建好了,这是第一种方式。第二种方式比较简单,就是直接在咱们 vs 扣的里面去创建,这是创建文件对不对?好,我们来去创建一个 ex 零一点 h 前面 啊,两种方式都给大家去讲到了啊,你用哪一种方式都可以?好, h 前面创建好之后,是不是我们还需要去创建一个 css 文件?同样呢,也有两种方式, 跟刚才的一样,你在这里呢,可以直接去这样去创建,也可以。怎么样去创建啊? vs 扣的里面去创建,哎,建议大家啊,椰丝扣的里面去创建,好吧, 这样比较方便一些啊,那 vsk 的里面是不是我们要创建在这个文件夹里面?来给他一个 css 文件夹,对不对?好,创建好之后是不是我们也需要有一个 css 文件呀?文件 之前给大家去说过,对吧?名字最好跟你当前创建的这个文件相一致就好了。这个咱先去掉吧,不然太多看着容易太乱啊, 这块很清晰明了了,对不对?那来看一下,我们有了 h 前面页面和 cs 这块,咱们之前讲过的,对不对? h 前面页面里面我们需要那 头文件怎么样?来办?快捷键吗?对吧?哎, shift 感叹号松开之后,然后按听不见,哎,这一块咱们就 ok 了,写好了是吧?好,写好了之后我们还需要把 cs 引入进来,这个引入跟咱们之前课堂里面讲到的引入是一模一样的, 直接另可四颜色就可以了,对不对?好,这个地方注意一下啊,很多小伙伴都说,哎,老师,我找不到他,对吧?你找的时候一定要看一下他跟他的一个等级关系,有小伙伴为什么找不到呢?是不是这里直接给他来一个 atm, 你把这个文件给他拖进来, 他跟他是同等级,对吧?你这样直接去找四 s 下面的四 s 文件,能不能 找到?找不到,对吧?这个是路径问题啊,好多小伙伴问过, 所以 h 前面你可以不用给他存放在文件夹里面,直接放在跟目录就可以了,能明白吗?跟 动作的时候他跟他同等级,对吧?同等级我们可以去找,也就是啊,哎,直接去找到 cs 的文件夹,对不对?他下面的哪一个文件啊?这个文件明白了吗?这是一个录件地址的一个问题啊。 这一块 ok 了之后我们来看一下 gs 引入的关系,有两种啊,第一种他也有一个自身的一个标签,就是 suv 的标签, 这个里面就是后续我们要写的一些 gs 代码,这是第一种引入方式, 但是这种方式呢,你了解一下就好啊,这个也有时候会用到,但是我们用的比较多的是第二种引入方式,这个引入方式是什么呢?他呢是通过 s plus src, 这个里面跟的就是我们所需要的一个 gs 文件,这个 gs 文件跟我们刚才说到的四 s 文件一样,你呢?最好把它放在文件夹里面, 紧接着在文件夹里面创建一个跟他名字相一致的英 x 零一点 js, 这能明白吗? 看一下,都把它放开看一下啊。你看这个文件,比如说我这个文件里面,我需要更改一下他的 cs 外观,是不是通过名字可以直接找的到,对不对啊?哎,比如说我想去更改一下他相关的借字代码,哎,我也可以通过他的名字直接可以找到,能明白吗?啊?就是一个方式啊,当然你不按这个也可以。好,那这个里面我们怎么样去找?是不是跟这个方式跟这个路径一样去找就可以了? 这样好,我们需要去找到借字文件夹下面的 ex 零一点借字,这是两种方式啊,借字的第二种引入方式, 推荐使用这种啊,这种用的也也比较多啊,你也要记一下,好吧。

大家好,最近呢稍微有点忙哈,有一段时间呢没有更新这个视频了,后台呢也收到一些小伙伴的催更这个视频呢,我们就接着前面继续来说一下生前拷贝的问题。 前面我们说了这么一个例子,有一个数组 a, 然后呢把 a 展开复制给 b, 并且修改了 a 数组, 这样对 b 会不会有影响呢?前面我们都分析过了哈,如果 a 它是一个一维数组的话,其实我们这样做呢,也可以对 b 呢是不会有影响的, 但是这里 a 呢它是一个二维数组,这样复制呢就会导致他第二层的数组,实际上呢也只是把地址复制过去,这样呢实际上也只是前拷贝。具体的分析呢,大家可以看一下前面一个视频。那如果说我们要实现这种多层数组或者多层对 像的声拷贝,应该怎么做呢?这里我们先来介绍一个比较常用但是呢是有缺陷的一个做法,就是呢,我们可以通过 jason 格式的转换来实现声拷贝,至于有什么缺陷呢,这个等一下再来说, 这里就不是把 a 直接展开复制给 b 了,改一下我们通过 jason 格式的转换哈,先把 a 呢给它转换成一个 jason 格式的制服串。 下面这两句呢,我们注释一下,看一下,我们把 a 呢给它转换成 jason 格式的字符串,再复制给 b, 然后呢输出来看一下,看一下他现在呢长什么样哈, 甚至呢,我可以在这个二维数组里面呢,给他再牵套一个对象进去,这样大家看这个格式呢就方便理解一点。好,来看一下,现在我们把 a 数组呢已经 转换成了节省格式的制服串了,像这里的对象哈,他转换成制服串呢间和值都是带有这个引号的,所以呢,我们现在只要把这个制服串给他,再转换成对象是不是就可以了? 这里呢,也很简单,我们只要通过 jason pass 这个方法,就可以把这个 jason 格式的字符串哈,给它解释成一个对象,把 b 输出来。同时呢,我们把 b 它的类型呢也输出来看一下哈,看它是不是一个对象。 没问题,现在 b 呢已经是一个 option 类型了,并且他已经拿到 a 里面的数据内容哈,已经复制一份给他了。 好,我们再来看,现在呢,我们把 a 修改了,还会不会影响到 b, 甚至我把它二位数组里面对象的 name 给它改一下,改成 amy。 好,现在 a 和 b 呢都输出来了。我们先来看一下 a, 展开它的二位数组哈,可以看到它的第一项呢,已经改成五了,二位数组下边唯一的这项,还有对象里面的 name 也改成了 amy。 再来看一下 b, 这里呢,我们看到哈,它的二位数组的第一项呢,还是是对象里面的 name 还是 jack? 所以呢,它是没有受到 a 的修改而改变。也就是说, 虽然现在呢,我们已经欠套了几层了,对吧,又有二维数组,二维数组里面呢还有对象,但是 a 的修改呢,已 经是影响不了 b 了,现在我们就可以实现多层的生拷贝了,那挺好的,对吧?这个方法又简单,他会有什么缺陷呢? 这里如果说我们的数据只是简单的数组和对象呢,倒无所谓,你欠套多少钱呢?都可以,但是还有一个类型我们也是经常用的,就是函数,他呢就不好使了。 举个简单的例子, a 这里呢,我们改成一个对象也不欠套了,直接给他一个属性和一个方法 输出一下 disney 也不用修改什么了,就看一下通过 jason 格式转换的这种方法哈,就一层数据,看它可不可以拷贝过去。来看一下这里呢,我们可以看到哈, a 对象里面呢, 他是有一个函数,有一个方法在里面的,但是拷贝到 b 呢,他只是有一个属性耐,但是这个方法呢,他并没有给他拷贝过来,所以说我们通过 jason 转换的这种方式,如果遇到函数他就不好使了, 不然的话用这个方法其实呢也可以,那有没有更加完美的方法呢?有是有,不过呢我们需要自己来写一个方法来实现这个,我们留到下一个视频再来说这个视频呢,先到这里感谢大家的收看。

哈喽,小朋友们大家好,今天给大家分享一个 jos prep 的原上 api, 就是复制粘贴好,它的用法非常简单啊。我们看一下这个复制, 我们直接用 labigator 点 clipboard, 然后点 write text, 直接把我们要复制的内容放到里面去就行了,他就可以把这个内容 哎写到我们的简填板里面去,然后我们从简填板里面读,也是非常简单,他就对应的这个 read text, 是吧?就读文本就行了。好,我们来看一下这个 demo。 好,今天这个 demo 就不带大家一起写了,因为它非常简单,就是两个按钮,一个是复制一个粘贴按钮, 当我们点击这个复制按钮的时候,它就掉了。我刚才说的这个 red text, 就把这个文本写到了我们的简贴版里面去了,然后当我们点这个粘贴,它就从这个简贴版里面通过 red text 把这个内容给它读出来。好, 然后通过 alert 给它打印出来。好,我们来看一下效果,首先复制,然后粘贴,哎,是不是就打印出来了?好,这就是给大家分享的内容,关注我获取更多有用知识。


坚持六零八无限复制功能。首先左边的机器是我们刚才已经和其他机器对屏完成的机器放在三线道,按住蓝色的 ptt 按键同时开机。 好,现在是红灯,红灯就是发射数据的模式,这是我们的另外一台是新机器,就是需要接收数据的那一台机器,放到四星岛也是按住蓝色的 ptt 按键同时开机。 现在是绿灯闪烁,同时我们的发射机器红灯也在闪烁。这个机器他的复制和其他机器有一点区别,就是他是闪烁一次,就是代表一个信道,复制完成一次要闪烁十六次,然后听到这边报 新机器报信道,然后才复制完成。好,我们稍等一下, 数好,复制完成重启,我们测试一下哈,三数数。喂喂喂喂,好,复制完成。