-
最新日志
最新评论
- sam 发表于《用“+”对数组进行合并》
存档页
分类
功能
搬家了
Posted in PhP
Leave a comment
判断一个数是偶数还是基数
这原本是一个简单的问题,按照正常的逻辑来写:
var num = 10;
var isEven;
if ( num%2 == 0 ){
isEven = true;
} else {
isEven = false;
}
如果用三元运算,可以把代码写得更简练:
var isEven = (num%2==0) ? true : false;
有没有更简练的呢?有!
var isEven = !(num%2);
javascript获取用户选择的文字
/* attempt to find a text selection */
function getSelected() {
// support by FF,OP,CH,
if(window.getSelection) { return window.getSelection(); }
// support by FF,OP,CH,
else if(document.getSelection) { return document.getSelection(); }
// support by IE,OP
else {
var selection = document.selection && document.selection.createRange();
if(selection.text) { return selection.text; }
return false;
}
return false;
}
OP居然能全部支持,赞一个
判断某元素是否存在某数组里(忽略大小写)
看CI的源码
判断某元素是否存在某数组里(忽略大小写)的写法
in_array( strtolower($needle), array_map( 'strtolower', $arr) );
使用Date对象要注意的问题
前几天asp.net部门的同事问我关于Date对象的一些问题,他在调试项目关于一个日历空间的js遇到了问题。我看了一下
关于Date对象的问题。记下来
[code]
var HT = 1000*60*60*24;
var now = new Date();
var yesterday = now - HT;
alert(new Date(yesterday));
var tomorrow = now + HT;
alert(new Date(tomorrow));
[/code]
对于第一个
var yesterday = now - HT;
js会把now自动转换成 “减” 操作,
但是第二个
var tomorrow = now + HT;
js只会认为是字符串连接。
也谈数字国际格式转换
在 做别人没想过的,想别人没做过的,看到一道腾讯的招聘题目--数字国际格式转换。
大概看了要求自己也动手写了起来:
//代码1:
function addComment( testInt,splitNum ){
testInt += '';
var len = testInt.length;
var testInt = testInt.split('').reverse().join('');
var newVal = '';
for ( var i=0,left=len; i
if ( left <= splitNum ) {
newVal = newVal + testInt.slice(i);
} else {
newVal = newVal + testInt.slice(i,i+splitNum) + ',';
}
left -= splitNum;
}
newVal = newVal.split('').reverse().join('');
return newVal;
}
写完后在firefox下用firebug测试效率,20000次循环。
addComment花费的时间是600+左右。
chen0908(因为不熟悉,所以暂时用这个称呼^_^)写的changeNumber,花费时间是700左右,也许是递归效率的问题。
测试正则所花费的时间也是差不多600+。
到了这里想和chen0908交流一下,于是便准备留言,发现chen0908的blog无法留言。
再次回顾自己写的程序,发现自己当时一定是脑子打结了,为什么要反转在反转,于是就修改了代码,最后代码如下:
function addComment2( testInt, splitNum ) {
testInt += '';
var len = testInt.length;
var newVal = '';
for ( var i=0,left=len; i<= 3 ) { newVal = testInt.slice( 0, left ) + newVal; } else { var offset = left-splitNum; newVal = ',' + testInt.slice( offset, left ) + newVal; } left -= splitNum; } return newVal; }
测试速度居然是 100+,心中很是惊讶,于是边有了这篇文章。
最后说一下,在google的chrome下测试,正则和addComment2居然是50+,另外两个也只需要100+,chrome实在太快了。
算法流程图如下
强制浏览器使用IE8兼容模式(IE7)浏览网站
公司的项目在IE8下速度很慢,主要是javascript运行效率的问题,平时只能用IE8的兼容模式来浏览,不过让客户每次浏览都去点击一下“使用兼容模式浏览”的确不是上策。今天日本总共是提出了一个解决方案:在服务器端强制用户使用IE8兼容模式或IE7模式浏览
实现方法是修改apache的配置文件:hpptd.conf
添加mod_headers模块
LoadModule headers_module modules/mod_headers.so
在网站目录配置添加
Header set X-UA-Compatible "IE=EmulateIE7"
讲相应头设置为IE7
当然,这也是中策而已,有人这么说:修改程序,使其从根本上兼容IE8才对
用“+”对数组进行合并
要合并的数组必须有一个为关联数组:例如
$arr1 = array(1,2,3,4);
$arr2 = array(5);
$sum = $arr1+$arr2;//这是失败的
$arr1 = array(1,2,3,4);
$arr2 = array('4'=>5);
$sum = $arr1+$arr2;//成功
mysql的CONCAT() 函数
在 “网站开发日志” 的一篇日志里看到 CONCAT这个函数,想起了项目里一个愚蠢的处理方式
http://www.61dh.com/blog/2009/09/mysql-select.html
数据库里有一个表
holidays,记录假期的数据
原本有字段如下
id, y, m, d, tt
因为某些原因,程序在想用户展示数据的时候显示完整日期,我原来的做法是往数据库里多添加一个字段fulldate,在保存ymd之后自动生成fulldate(这样现在想起来真的很多余)
今天才知道CONCAT这个函数,轻松地解决了我的需求。sql是这样的:
SELECT tt, CONCAT(y,'/',m,'/',d) as fulldate from tableName
基础差,真可怕
MYSQL的find_in_set()函数
今天见到有网友提问这么一个问题
select * from table where id in (1,2,3)
按照这样的sql语句查询出来的顺序应该是 id升序排序
可这位网友不知道什么原因,希望按照 1 ,3 ,2来排序。
自己以前没有想过这个问题,看到有网友解答
使用find_in_set()函数,具体实现如下:
select * from table where id in (1,2,3) order by find_in_set('id', '1,3,2')
