|
楼主 |
发表于 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;
}
|
|