JS怎样实现一个快速sql server 索引类型数组的数据类型

Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了如何在JS数组特定索引处指定位置插入元素?将一个元素插入到现有数组的特定索引处,需要的朋友可以参考下
如何在JS数组特定索引处指定位置插入元素?
需求: 将一个元素插入到现有数组的特定索引处。听起来很容易和常见,但需要一点时间来研究它。
// 原来的数组
var array = ["one", "two", "four"];
// splice(position, numberOfItemsToRemove, item)
// 拼接函数(索引位置, 要删除元素的数量, 元素)
array.splice(2, 0, "three"); //
// 现在数组是这个样子 ["one", "two", "three", "four"]
如果对扩展原生 JavaScript 不反感,那么可以将这个方法添加到数组原型(Array prototype)中:
Array.prototype.insert = function (index, item) {
this.splice(index, 0, item);
此时,可以这样调用:
var nums = ["one", "two", "four"];
nums.insert(2, 'three'); // 注意数组索引, [0,1,2..]
array // ["one", "two", "three", "four"]
Copyright &
All Rights Reserved &&&&&&javascript检查某个元素在数组中的索引值
投稿:mdxy-dxy
字体:[ ] 类型:转载 时间:
在js中提供数据查找了函数有很多,但我查找了很久都没有能实现我要的方法,后来发现可以使用indexOf函数来实现查找与定位数组元素索引值的具体方法,各位朋友可参考
在现在代浏览器中判断一个元素在不在一个数组中,咱们可以用Array对象的indexOf()方法来取得这个元素在当前数组中的索引值,若索引值不等于-1,数组中就存在这个元素,
var arr = [2,53,23,'test',9,'array'];
//判断array在不在数组arr中
arr.indexOf('array') !== -1 ? alert('存在') : alert('不存在');
但是IE9以前的版本都不支持此方法,那咱们就只能扩展一个:
代码如下复制代码
Array.prototype.indexOf = function(el){
for (var i=0,n=this. i&n; i++){
if (this[i] === el){
return -1;
下面咱们就来检测一下各个浏览器的兼容性,代码如下:
var arr = [2,53,23,'test',9,'array'];
if(!Array.indexOf){
Array.prototype.indexOf = function(el){
for (var i=0,n=this. i&n; i++){
if (this[i] === el){
return -1;
arr.indexOf('array') !== -1 ? alert('存在') : alert('不存在');
上面就是用Array的indexOf方法来判断数组中一个元素是否存在的方法。
Array的原生方法:
concat(): 连接两个或更多的数组哦
join(): 把数组的所有元素放在一个字符串中
pop():删除并返回数组的最后一个元素
push():向数组的末尾添加一个元素,并返回数组长度。
reverse():颠倒数组中的元素顺序
shift(): 删除并返回数组的第一个元素。
slice():返回已选定的元素
sort():对数组的元素进行排序
splice():删除元素,并向数组添加新元素。
toSource():返回该对象的源代码
toString():把数组转换为字符串,并返回结果
valueOf():返回数组对象的原始值。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具js构造函数、索引数组和属性的实现方式和使用
投稿:mdxy-dxy
字体:[ ] 类型:转载 时间:
本文主要介绍和小结js的构造函数,关联数组的实现方式和使用,及不可变对象和它的实现方式及他们使用过程中要注意的点,需要的朋友可以参考下
function p(){
var len=arguments.
for(var i=0;i&i++){
document.write(arguments[i]+"&br/&");
function Myclass(x,y){
this.show=function(){
return this.x+this.y;
var m1=new Myclass(1,2);
var m2=new Myclass(3,4);
p(m1.show(),m2.show());
存在的问题
1.由于所有的实例都是复制了同一个方法所定义的实体,所以效率(内存效率与执行效率低下),可通过原型继承解决
2.无法对属性值进行访问控制(private ,Public)可通过闭包解决
属性访问的运算对象不是变量而是对象的引用
仅读取数值的整数部分的处理
Math[this&0?'celling':'floor'](this);
在js中必须通过对象才能实现关联数组
基本操作 通过键取值,元素的设定,元素的删除
var map={x:3,y:4};
delete map.x; //true
p(map.x); //undefined 对不存在的元素进行访问结果是undefined ,由于可以显示地将值设置为undefined ,因此无法通过将值与undefined比较来判断值是否存在 ,可以通过for in进行枚举
a='undefined';
p(a);//undefined
p(typeof map.x==a); //true
作为关联数组应该注意的点
function Myclass(x,y){
Myclass.prototype.z=5;
var obj=new Myclass(1,2);
for(var key in obj){
p(key+":"+obj[key]); //会枚举出通过原型继承来的属性
//x:1 y:2 z:5
delete obj.x;//true
p(obj.x); //undefined
p(obj.z); //5
//通过原型继承来的属性 无法被delete删除
delete obj.z; //true
p(obj.z);//5
//在将对象作为关联数组使用时,通常都会使用字面量来创建,即使视图通过使用空的对象字面量来创建一个没有元素的关联数组,也仍会从Object类中继承原型的属性
p('toString' in obj); //true
var obj1={};
p('toString' in obj1);//true
//通过 for in枚举
p(obj1.length); //undefined
for(var k in obj1){
p(obj1[k]);
//没有元素 被枚举出来 这是由于enumerable属性的缘故
//通过hasOwnProperty来判断 是本身的属性还是通过 参与原型继承而来的属性
var map={};
p(map.hasOwnProperty('toString')); //false
map['toString']=1;
p(map.hasOwnProperty('toString')); //true
delete map['toString'] ;
p(map.hasOwnProperty('toString'));//false
属性的属性
对象的属性 也是有些属性的
如下表总结了在ECMAScript第五版定义了的属性 ,属性值被定为为值属性
属性的属性名
可以改写属性的值
enumerable
可以通过for in枚举出
configurable
可以改变属性的属性,可以删除属性
可以指定属性值的getter函数
可以指定属性值的setter函数
不可变对象
即生成之后状态不能再被改变的对象,字符串对象就是典型的不可变对象
灵活运用不可变对象可以提高程序的健壮性,比如在将传递给方法参数时,存在方法对对象内容的改写等
js中可通过以下方式实现不可变对象
1.将属性(状态隐藏藏) ,不提供变更操作(闭包实现)
2.灵活运用ECMAScript第五版提供的函数
3.灵活运用writable,configurable属性以及setter和getter
ECMAScript第五版中用于支持对象不可变的函数 见下表格
属性值变更
preventExtensions
Object.isExtensible
Object.isSealed
Object.isFrozen
Object.preventExtensions例子
var obj={x:2,y:3};
Object.preventExtensions(obj);
//无法新增属性
p(Object.keys(obj));//x,y
//可以删除属性
delete obj.y;
p(Object.keys(obj)); //x
//可以更改属性值
p(obj.x); //20
//Object.seal例子 将属性的configurable设置为假
var obj={x:2,y:3};
Object.seal(obj);
//无法新增 也无法删除
p(Object.keys(obj)); //x,y
delete obj.x; //false
p(Object.keys(obj));//x,y
//可以改变 属性值
p(obj.x);//20
//Object.freeze例子 将属性的writable设置为假
var obj={x:2,y:3};
Object.freeze(obj);
//无法新增 也无法删除,也无法改变属性值
p(Object.keys(obj)); //x,y
delete obj.x;
p(Object.keys(obj));//x,y
//可以改变 属性值
p(obj.x);//20
1.对于以上三种方法一旦更改就无法还原
2.如果想让原型继承中的被继承的方法也不可改变,需要对其进行显示操作
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 索引类型 的文章

 

随机推荐