ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ctp_119

[原创] 跟我学JavaScript in WPS

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-24 08:22 | 显示全部楼层
         在学习过程中有关JS语法不明白的看下来的链接


                  https://wangdoc.com/




微信截图_20220524082024.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-25 04:09 | 显示全部楼层
          我想,任何一个人的自学之路都不可能平坦且都是阳光大道。本人在自学的过程中确实走了不少弯路,像极了人生,但请不要嘲笑一个勤奋努力的人!你的视野,决定了你的人生。写代码也一样,在没有学到那个知识点的时候,自己却拐弯抹角的去写代码实现,学到最后,发现该对象有这个方法,自己却为了实现这个功能,写了一堆的代码,这时,回头一看,会心一笑,笑自己有多痴!!!尽管如此,也是自己的经历和人生财富。思维之路也会越走越宽!

          我为了将对象的属性转换为数组,自己却写了一个 转换函数,当时还沾沾自喜,可以简化过程和思维!且看下面 代码:
    function test3(){
        var obj={};
        var i,j;
        i=Range("A65536").End(xlUp).Row;
        for (j=2;j<=i;j++){
                if (isNaN(obj[Cells.Item(j,1).Value2])){//如果JS中有类似于iif这样的函数,就更简单了!可是找了半天没有找到
                        obj[Cells.Item(j,1).Value2]=0;
                }
                obj[Cells.Item(j,1).Value2]=obj[Cells.Item(j,1).Value2]+Cells.Item(j,2).Value2;  //这句完全和字典是一样的,开始学字典的时候不理解,现在终于理解了!!!
        }
        var arr=Object.keys(obj);   //通过object.keys方法读取obj对象的属性,并复制给变量arr,是一个一维数组
        //var crr=ocr(obj);      //调用自定义函数ocr
       
        Range("M2").Resize(arr.length,1).Value2=WorksheetFunction.Transpose(arr);
        Range("N2").Resize(arr.length,1).Value2=WorksheetFunction.Transpose(ocr(obj));   //改成了直接调用函数,省略了一个变量传递过程
}
function ocr(objt){      //ocr函数功能是将对象的属性值转换为数组,objt是形参
        brr=[];     //定义一个空数组
        for (var i in objt){
                brr.push(objt);    //通过数组push方法向空数组中添加数据
        }
        return brr;
}

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-25 04:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
            自学还是要靠自己多琢磨,自己多设想问题,自己去写代码实现,这样才有进步!!!开始只要能实现 功能即可,而后,在不断的优化,,,这样,你的进步就会非常明显,过程之中,就会有一种成就感,增强自己的自学信心!!!

           我们的目标不要忘记了!自学的目的就是要用在工作中,简化工作量,提供工作效率,不要脱离实际,去追求一些高大上的不切实际的东西。
           图片中的数组排序就不一一列举了,代码都在工作簿里,我把附件加上。想学习的人下载学习,补充自己的方法。










                通过集合和对象模拟字典.zip (11.35 KB, 下载次数: 150)

TA的精华主题

TA的得分主题

发表于 2022-5-25 08:26 | 显示全部楼层
ctp_119 发表于 2022-5-25 04:23
自学还是要靠自己多琢磨,自己多设想问题,自己去写代码实现,这样才有进步!!!开始只要能实 ...

版主可以 关注下js的 多 维数组,因为跟vba相比,是完全动态的,我也觉得是js对vba的最大优势。
如下:
var arr = new Array();

arr[0] = new Array();

arr[1] = new Array();

arr[0][0] = "00";

arr[0][1] = "01";

arr[1][0] = "10";

arr[1][1] = "11";

点评

不要急,后续有二维数组的。数组是重点!!!  发表于 2022-5-26 07:45

TA的精华主题

TA的得分主题

发表于 2022-5-26 13:03 | 显示全部楼层
ctp_119 发表于 2022-5-22 05:17
编程对世界的理解:               什么是对象?简单说,对象就是一组“键值对”(key-value)的集合 ...

楼主有关于JS宏何时能实现表格、文字、演示时间的通信的开发进度吗,像VBA那个CreateObject?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-26 20:14 | 显示全部楼层
本帖最后由 ctp_119 于 2022-5-26 21:09 编辑

          有关Object对象的学习
          object对象有两部分组成,即键和键值,键名不可重复,同名键的值,后面加入的替换前面的。
          定义对象:
                var obj=new Object();
          通常简化为:
                var obj={};


          给对象添加项目(即键和键值):(写入)
               obj[键名]=键值;


         读取键名
         1)   for ...in
         2)  Object.keys(obj)
         读取键值
         1)   for ...  of
         2)   Object.values()
         读取整个对象
         Object.entries()


保存的时候出现一点故障,,,下帖续实例


通过对象提取第一次和最后一次工价.zip (12.2 KB, 下载次数: 120)

















TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-26 21:03 | 显示全部楼层
本帖最后由 ctp_119 于 2022-5-26 21:52 编辑

          有关Object对象的学习
          object对象有两部分组成,即键和键值,键名不可重复,同名键的值,后面加入的替换前面的。
          定义对象:
                var obj=new Object();
          通常简化为:
                var obj={};


          给对象添加项目(即键和键值):(写入)
               obj[键名]=键值;


         读取键名
         1)   for ...in
         2)  Object.keys()
         读取键值
         1)   for ...  of
         2)   Object.values()
         读取整个对象
         Object.entries()


         实例:
微信截图_20220526205907.png

复制代码


         

image.png

TA的精华主题

TA的得分主题

发表于 2022-5-27 20:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
优先的版主。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-28 19:40 | 显示全部楼层
           不知道坛友们有没有感知到,自学的规律!  

           下面我们进入数组的学习,再感受一下:
          f17f554502e4fc24b6f3f66930651ce.png

  1. //二维数组
  2. function ewsz(){
  3.         var arr=[[]];    //定义arr为一个空的二维数组
  4.         arr=[[1,2],[3,4],[5,6]];   //给二维数组arr赋值
  5.         //在 工作表中,不管是单行还是单列,抑或多行多列都是二维数组
  6.         var brr=Range("a1:a6").Value2;     //二维数组,定义并赋值
  7.         var crr=Range("a1:f1").Value();     //二维数组,定义并赋值
  8.         var drr=Range("a1:f6").valueOf();    //二维数组,定义并赋值
  9.         var i=0;
  10.         for (var br of brr){
  11.                 ++i;
  12.                 Range("i"+i).Value2=br;
  13.         }
  14. }
复制代码



TA的精华主题

TA的得分主题

发表于 2022-5-28 21:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ctp_119 发表于 2022-5-26 21:03
有关Object对象的学习
          object对象有两部分组成,即键和键值,键名不可重复,同名键的 ...

obj 与vba里面的字典类似吧?

点评

是的,而且比字典更好用!这是JS强大的一方面!!!  发表于 2022-5-29 07:44
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 19:14 , Processed in 0.040496 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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