今天网上看到一句话,大致意思是
如果要频繁的进行删除,添加操作,就用JSON。因为数组不适合频繁的添加删除操作。
如果要频繁的取数据就用 数组。
我的理解是这样的,因为平凡的对数组进行添加删除操作,会改变数组的长度,不利于遍历。尤其是在这种经常改变数组长度情况下,用forEach 就可能会出现问题。
1、不知道这样想对不对哦,只是从实践结果上去理解这个问题,感觉好粗浅,有没有什么更深层次的,原理上的原因啊?
2、还有,对于频繁的数组添加删除操作要用JSON,应该怎么用啊?把数组转换成JSON?然后呢?还是说我的理解有问题?
一脸懵逼啊~~~~
数组的定义是一段连续的内存空间,
根据下标查找是直接寻址,根据首节点地址跟每个节点的空间大小给算出来的,所以查找快。
同时数组的大小是固定的,不能变长,c/c++的变长其实是重新申请一块内存,把旧数组给复制过去了。
本质上数组append和replace是一样的,都是替换。对于insert,因为需要把数组指定位置后面的节点后移,所以涉及多步操作。
对于链表,因为本身就不是连续的空间,所以可以直接插入,但是查找需要便利,虽然有多种树形结构来提高查找复杂度,但是都有副作用,比如普通链表利于遍历,不利于指定查找,hash利于指定查找不利于遍历。
综上,数组利于查找,链表利于插入是对的。
但是此数组非彼数组,
php,js等脚本语言的数组并非传统意义的数组,他们都是用链表模拟的,
所以要看具体语言实现。