jquery解析json数据,得到的是数组还是对象?
//todo
//todo
同样的数据从服务器取得并解码后(json数据),在js端呈现两种不同的结果,一为数组,一为对象,暂且不讨论问题的原因(待解决),这里讨论解决办法。
开始以为只会遍历数组,没考虑到会遍历对象,所以用了 for(对象无length属性所以失败)。
forEach 只能用于数组,不能用于对象;
for 需要长度作为循环终止条件,对象没有length属性,也不考虑;
for in 可以同时遍历数组和对象,符合条件;
1 | var searches = {state:1,page:2}; |
Object.keys() 先把对象或属性取出来得到数组a,然后遍历a,相当于在遍历数组和对象,也符合条件;
思路:将 array (key => array) 转换为 array (key => array中的待排序字段),降维为一维数组排序,然后将一维数组的value替换为原始数组对应key的value。
二维数组排序的时间复杂度等同一维数组排序的时间复杂度。同理推测,n维数组排序的时间复杂度等同一维数组排序的时间复杂度。
需求描述:
有一个 4*4 的方格,用户可以选择起点和落点形成矩形,每次形成的矩形不能重叠,起点可以和落点坐标一样。现已知起点、未选点集合和已选点集合,求落点的集合。
算法重点:转换为判断点P是否在一个矩形内。
###方法一:建立平面直角坐标系,根据横坐标和纵坐标判断点是否在矩形内。
1 |
|
使用 register_shutdown_function 捕获代码异常的时候,语法错误是无法捕获的,本着及时预防、发现错误的原则,利用 svn 的 hooks 对提交的代码进行语法检查很有必要。
svn常见的钩子有:
post-commit:文件提交之后执行
post-lock:文件加锁之后执行
post-revprop-change:revision 属性修改之后执行
post-unlock:文件解锁之后执行
pre-commit:文件提交之前执行
pre-lock:文件加锁之前执行
pre-revprop-change:revision 属性修改之前执行
pre-unlock:文件解锁之前执行
start-commit:未建立 Subversion transaction 之前执行
这里使用 pre-commit 这个钩子。
PS:这里遇到一个问题就是不知道svn安装在哪里的。。。最后求助于命令 whereis svn. Yeah! [更多linux命令][1]
composer作为一款PHP的包管理器,类似于Java中的maven。当我们用composer把需要使用的包下载下来后,借助__autoload() 我们就能直接在项目中使用第三方库了。
composer提供了四种自动加载机制:
了解 spl_autoload_register() 前先了解一下 __autoload(),或者直接 跳过此节:
1 | function __autoload($c) |
1 | //输出 |
当Say类不存在的时候,自动执行了 __autoload() 函数,并将类名当做参数传入了 __autoload()。
use HuNanZai\Component\Log\Service as Logger;
use Api\ShopCom\Model\UncheckLog;
use Api\ShopCom\Model\CheckedLog;
use Api\ShopCom\Model\CheckProof;
use Api\ShopCom\Model\PayLog;
use HuNanZai\Component\Log\Service as Logger;
去HuNanZai\Component\Log\Service看源码。涉及到composer。
composer:提供依赖管理+自动加载功能。
phpstorm是否支持composer:支持,在windows上安装composer,进入composer.json所在目录,运行composer install -vvv
composer.json:composer中的autoload:自动加载,基于spl_autoload_register() 函数