【经验分享】Javascript几个原创小技巧。

王集鹄 2010-04-21 04:18:34
加精
欢迎拍砖

1、字符串转换为数值
常规方法:
var a = parseFloat("12");
var b = parseInt("34");

可以用
var a = +("12");
var b = +("34");


2、多维数组
常规方法:
var A = new Array(2);
A[0] = new Array(2);
A[1] = new Array(2);
A[0][0] = 1;
A[0][1] = 2;
A[1][0] = 2;
A[1][2] = 2;


可以利用对象的属性轻松实现
var A = {};
A[[0, 0]] = 1;
A[[0, 1]] = 2;
A[[1, 0]] = 3;
A[[1, 2]] = 4;


3、遍历正则结果
常规方法:
var str = "a1b2c3d4e5f6g7h8i9j0k";
var match = str.match(/\d/g, str);
var msg = [];
for(var i = 0; i < match.length; i++) {
msg.push(match[i]);
}
alert(msg);

可以利用String.replace方法
var str = "a1b2c3d4e5f6g7h8i9j0k";
var msg = [];
str.replace(/\d/g, function() {
msg.push(arguments[0]);
});
alert(msg);


大家自己又什么发现欢迎交流。

--- 楼下补充和讨论汇总 ---
22楼cuixiping

如果确需copy到一个普通数组,也可以更简单有效的实现:
var str = "a1b2c3d4e5f6g7h8i9j0k";
var msg = str.replace(/\D/g,'').split('');
alert(msg);


我也举一个奇淫巧技:

整数前补0

网上搜的笨方法:
function pad(num, n) {
var len = num.toString().length;
while(len <n){
num = "0" + num;
len++;
}
return num;
}
alert(pad(3,6)); //000003


奇淫巧计法1:
function pad(num, n) {
return (Math.pow(10,n)+num+'').substr(1); //缺点:位数长度有限,15位以内。
}
alert(pad(3,6)); //000003


奇淫巧计法2:(推荐)
function pad(num, n) {
y='00000000000000000000000000000'+num; //爱几个0就几个,自己够用就行
return y.substr(y.length-n);
}
alert(pad(3,6)); //000003


129楼 lepharye
通过>>>取整


var test = 3.45;
alert(test>>>0);
...全文
14310 537 打赏 收藏 举报
写回复
537 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liuyong1855 2012-11-19
学习了,上次面试有碰到了一些问题
  • 打赏
  • 举报
回复
wu_now 2012-11-16
很不错的分享,谢谢楼主,收藏一个咯!!
  • 打赏
  • 举报
回复
okjt12345 2012-11-16
整数前补0 还可以改进 return ("0000000000000000" + num).slice(-n); // 截取n位, 不足补0
  • 打赏
  • 举报
回复
okjt12345 2012-11-16
随机3位字符串 Math.random().toFixed(3).slice(2) 随机4位字符串 Math.random().toFixed(4).slice(2) 随机5位字符串 Math.random().toFixed(5).slice(2)
  • 打赏
  • 举报
回复
zhy77117178 2012-01-16
已经收藏,正在测试!
  • 打赏
  • 举报
回复
路过,学习~
  • 打赏
  • 举报
回复
yt2626 2011-08-23
万变不离其中!都是字符串的处理,或转变!!!学习
  • 打赏
  • 举报
回复
cjfriends 2011-08-22
[Quote=引用 17 楼 zswang 的回复:]
1、兴趣最重要,做一件你感兴趣的事情,你会倾尽全力;
2、多动手,多做demo,熟能生巧,通过实践获得认知才够真实和深刻;
3、把你积累的经验分享出来,一是帮助更多的人少走弯路,另一个是激发自己更上一层,否则你误以为已经掌握了核心技术而止步;
4、编码上要规范、简单……
[/Quote]

有兴趣,会把它当做一项事业,没有兴趣,顶多当做一份工作
  • 打赏
  • 举报
回复
wj_black503 2011-08-22
顶,好帖
  • 打赏
  • 举报
回复
localfox 2011-08-20
呵呵,蛮不错的
  • 打赏
  • 举报
回复
grieous 2011-08-04
学习了
  • 打赏
  • 举报
回复
梅雪香 2011-08-03
alert( str.split(/\D/) );
  • 打赏
  • 举报
回复
邓巍 2011-08-01
必须回 啊
  • 打赏
  • 举报
回复
后浪 2011-07-19
学习了!
  • 打赏
  • 举报
回复
hxiaocai 2011-07-14
标记. . .
  • 打赏
  • 举报
回复
ZiSheng 2011-07-05
这样的话,A[0][0]并不能用的,感觉这样写意义不大。
  • 打赏
  • 举报
回复
ZiSheng 2011-07-05
[Quote=引用 519 楼 zswang 的回复:]
A[[0, 1]] = 2;
->>
A["0,1"] = 2;
[/Quote]
嘿嘿,中括号还可以这样用???
  • 打赏
  • 举报
回复
linbh2job 2011-07-05
留言个脚印
  • 打赏
  • 举报
回复
王集鹄 2011-07-05
A[[0, 1]] = 2;
->>
A["0,1"] = 2;
  • 打赏
  • 举报
回复
ZiSheng 2011-07-05
第二个多维数组,

var A = {};//创建了一个空对象
A[[0, 0]] = 1;//两个中括号?????
A[[0, 1]] = 2;
A[[1, 0]] = 3;
A[[1, 2]] = 4;

我不懂,LZ能不能帮我解释下。先谢谢了。
  • 打赏
  • 举报
回复
加载更多回复(507)
发帖
JavaScript

8.6w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-04-21 04:18
社区公告
暂无公告