数码资讯
数组添加方法的Javascript
在Javascript中向数组中添加元素是一个非常简单的问题。Javascript本身提供了大量这样的函数。我们可以使用js快速地将元素组合起来。本文对Javascript的数组加法方法进行了总结。 在过去,arr.concat(arr2)是用来增加阵列。例子如下: 复制代码代码如下所示: var
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在Javascript中向数组中添加元素是一个非常简单的问题。Javascript本身提供了大量这样的函数。我们可以使用js快速地将元素组合起来。本文对Javascript的数组加法方法进行了总结。
在过去,arr.concat(arr2)是用来增加阵列。例子如下:
复制代码代码如下所示:
var arr =新阵(3);
ARR { 0 } =测试阵列1是1;
ARR { 1 } =测试阵列1是2;
ARR { 2 } =测试阵列1是3;
VaR arr2 =新阵(3);
arr2 { 0 } =测试阵列2是1;
arr2 { 1 } =测试阵列2是2;
arr2 { 2 } =测试阵列2是3;
document.write(arr.concat(arr2)+ );
(arr.concat document.write(你的主人2
许多人对JS数组元素的添加和删除感到困惑。给出了以下测试:
复制代码代码如下所示:
VaR ARR =新的数组();
ARR { 0 } =AAA;
ARR { 1 } =BBB;
ARR { 2 } =CCC;
/ /警报(arr.length); / / 3
Arr.pop();
/ /警报(arr.length); / / 2
/ /警报(ARR { arr.length-1 }); / / BBB
Arr.pop();
/ /警报(ARR { arr.length-1 }); / / AAA
/ /警报(arr.length); / / 1
VaR arr2 =新的数组();
/ /警报(arr2。长度); / / 0
arr2 { 0 } =AAA;
arr2 { 1 } =BBB;
/ /警报(arr2。长度); / / 2
arr2.pop();
/ /警报(arr2。长度); / / 1
arr2.slice arr2 =(0,arr2。length-1);
/ /警报(arr2。长度); / / 0
arr2 { 0 } =AAA;
arr2 { 1 } =BBB;
arr2 { 2 } =CCC;
arr2.slice arr2 =(0,1);
警报(arr2。长度); / / 1
警报(arr2 { 0 }); / / AAA
警报(arr2 { 1 }); / /未定义
移位:删除原始数组的第一项并返回删除元素的值;如果数组为空,返回到未定义的值。
var a = { 12345 };
var b = a.shift(); / /:{五} B:1
位置:添加参数并返回到原来的数组,数组的长度
var a = { 12345 };
var b = a.unshift(- 2,- 1); / /:{ 2 },- 1,1,2,3,4,5 B:7
注意:返回值在IE6.0总是不确定的,并且返回值是7下ff2.0。因此,该方法的返回值不可靠,当需要返回值时,可以用拼接代替此方法。
弹出:删除原始数组的最后一项,返回删除元素的值;如果数组是空的,返回到未定义的值。
var a = { 12345 };
var b = a.pop( / /:{三} B: / / 5);不返回的话可以直接调用
推送:将参数添加到原始数组的结尾并返回数组的长度。
var a = { 12345 };
var b = a.push(6,7); / /:{ 1,2,3,4,5,6,7 } B:7
连接:返回一个新数组,它是由原始数组中的参数
var a = { 12345 };
var b = a.concat(6,7); / /:{ } { } B:1,2,3,4,5,6,7 1,2,3,4,5
剪接(开始,DeleteCount的DeleteAt,val1,val2,…):删除DeleteCount的DeleteAt进入启动位置并从该位置插入val1,val2,…
var a = { 12345 };
var b = a.splice(2,2,7,8,9); / /:{ } { } 1,2,7,8,9,5 B:4
var b = a.splice(0,1); / /移
a.splice(0,0,- 2,- 1);var b = a.length; / /位置
var b = a.splice(a.length-1,1); / /流行
a.splice(a.length,0,6,7);var b = a.length; / /推
反:反序数组
var a = { 12345 };
var b = a.reverse(); / /:{ } { } 5,4,3,2,1 B:5,4,3,2,1
排序(秩序):通过指定的参数的数组排序
var a = { 12345 };
var b = a.sort(); / /:{ } { } 12345 B:1,2,3,4,5
切片(开始,结束):从原始数组返回到起始下标到结束下标的一组新项目。
var a = { 12345 };
var b = a.slice(2,5); / /:{ } {他} B:1,2,3,4,5
添加(分隔符):以字符串、分隔符作为分隔符设置元素数组,以及以逗号作为分隔符的省略号。
var a = { 12345 };
var b = a.join(| ); / /:{ 1 } B:1,2,3,4,5 | 2 | 3 | 4 | 5
然后给出一个方法来处理字符串,用数组模拟javastringbuffer:
*字符串处理函数
* /
StringBuffer()函数
{
var arr =新的数组;
this.append =功能(STR)
{
ARR { } = arr.length STR;
};
this.tostring =功能()
{
返回arr.join(追加); / /放在一个字符串数组成坪
};
}
今天,我们突然发现连接是将数组转换成字符串的好方法,因此它被用作对象。
/ * *
*将数组转换为由特定符号分隔的字符串。
* /
功能arraytostring(ARR,分离器)
{
如果(!分隔符分隔符 ;分隔符作为空值为默认值。
返回arr.join(分离器);
}
*查找数组中包含的字符串。
* /
功能arrayfindstring(ARR,字符串)
{
var str = arr.join();
返回str.indexof(字符串);
}
最后,有一个关于push.apply添加阵列a.push.apply问题(A,B);对这种做法的朋友测试
A.push.apply(A,B);这个自以为很酷,不需要写周期的写作方法,没有遇到任何问题,直到今天我想追加B是一个大阵,才符合坑。
复制代码代码如下所示:
=新数组();
b =新数组(125624);
A.push.apply(A,B);
上面的代码在Mac的Chrome下抛出以下异常
Uncaught RangeError:最大堆栈大小超过
如果数组被转换为新数组(125623),那么一个小元素就更好了。经过测试,其他浏览器也有大的数组出错,但不同浏览器的阈值也不同。
这里的建议是一个古老而现实的foreach,不仅避免了大型阵列的例外,但也要考虑,从性能的角度来看是最快的。
在过去,arr.concat(arr2)是用来增加阵列。例子如下:
复制代码代码如下所示:
var arr =新阵(3);
ARR { 0 } =测试阵列1是1;
ARR { 1 } =测试阵列1是2;
ARR { 2 } =测试阵列1是3;
VaR arr2 =新阵(3);
arr2 { 0 } =测试阵列2是1;
arr2 { 1 } =测试阵列2是2;
arr2 { 2 } =测试阵列2是3;
document.write(arr.concat(arr2)+ );
(arr.concat document.write(你的主人2
许多人对JS数组元素的添加和删除感到困惑。给出了以下测试:
复制代码代码如下所示:
VaR ARR =新的数组();
ARR { 0 } =AAA;
ARR { 1 } =BBB;
ARR { 2 } =CCC;
/ /警报(arr.length); / / 3
Arr.pop();
/ /警报(arr.length); / / 2
/ /警报(ARR { arr.length-1 }); / / BBB
Arr.pop();
/ /警报(ARR { arr.length-1 }); / / AAA
/ /警报(arr.length); / / 1
VaR arr2 =新的数组();
/ /警报(arr2。长度); / / 0
arr2 { 0 } =AAA;
arr2 { 1 } =BBB;
/ /警报(arr2。长度); / / 2
arr2.pop();
/ /警报(arr2。长度); / / 1
arr2.slice arr2 =(0,arr2。length-1);
/ /警报(arr2。长度); / / 0
arr2 { 0 } =AAA;
arr2 { 1 } =BBB;
arr2 { 2 } =CCC;
arr2.slice arr2 =(0,1);
警报(arr2。长度); / / 1
警报(arr2 { 0 }); / / AAA
警报(arr2 { 1 }); / /未定义
移位:删除原始数组的第一项并返回删除元素的值;如果数组为空,返回到未定义的值。
var a = { 12345 };
var b = a.shift(); / /:{五} B:1
位置:添加参数并返回到原来的数组,数组的长度
var a = { 12345 };
var b = a.unshift(- 2,- 1); / /:{ 2 },- 1,1,2,3,4,5 B:7
注意:返回值在IE6.0总是不确定的,并且返回值是7下ff2.0。因此,该方法的返回值不可靠,当需要返回值时,可以用拼接代替此方法。
弹出:删除原始数组的最后一项,返回删除元素的值;如果数组是空的,返回到未定义的值。
var a = { 12345 };
var b = a.pop( / /:{三} B: / / 5);不返回的话可以直接调用
推送:将参数添加到原始数组的结尾并返回数组的长度。
var a = { 12345 };
var b = a.push(6,7); / /:{ 1,2,3,4,5,6,7 } B:7
连接:返回一个新数组,它是由原始数组中的参数
var a = { 12345 };
var b = a.concat(6,7); / /:{ } { } B:1,2,3,4,5,6,7 1,2,3,4,5
剪接(开始,DeleteCount的DeleteAt,val1,val2,…):删除DeleteCount的DeleteAt进入启动位置并从该位置插入val1,val2,…
var a = { 12345 };
var b = a.splice(2,2,7,8,9); / /:{ } { } 1,2,7,8,9,5 B:4
var b = a.splice(0,1); / /移
a.splice(0,0,- 2,- 1);var b = a.length; / /位置
var b = a.splice(a.length-1,1); / /流行
a.splice(a.length,0,6,7);var b = a.length; / /推
反:反序数组
var a = { 12345 };
var b = a.reverse(); / /:{ } { } 5,4,3,2,1 B:5,4,3,2,1
排序(秩序):通过指定的参数的数组排序
var a = { 12345 };
var b = a.sort(); / /:{ } { } 12345 B:1,2,3,4,5
切片(开始,结束):从原始数组返回到起始下标到结束下标的一组新项目。
var a = { 12345 };
var b = a.slice(2,5); / /:{ } {他} B:1,2,3,4,5
添加(分隔符):以字符串、分隔符作为分隔符设置元素数组,以及以逗号作为分隔符的省略号。
var a = { 12345 };
var b = a.join(| ); / /:{ 1 } B:1,2,3,4,5 | 2 | 3 | 4 | 5
然后给出一个方法来处理字符串,用数组模拟javastringbuffer:
*字符串处理函数
* /
StringBuffer()函数
{
var arr =新的数组;
this.append =功能(STR)
{
ARR { } = arr.length STR;
};
this.tostring =功能()
{
返回arr.join(追加); / /放在一个字符串数组成坪
};
}
今天,我们突然发现连接是将数组转换成字符串的好方法,因此它被用作对象。
/ * *
*将数组转换为由特定符号分隔的字符串。
* /
功能arraytostring(ARR,分离器)
{
如果(!分隔符分隔符 ;分隔符作为空值为默认值。
返回arr.join(分离器);
}
*查找数组中包含的字符串。
* /
功能arrayfindstring(ARR,字符串)
{
var str = arr.join();
返回str.indexof(字符串);
}
最后,有一个关于push.apply添加阵列a.push.apply问题(A,B);对这种做法的朋友测试
A.push.apply(A,B);这个自以为很酷,不需要写周期的写作方法,没有遇到任何问题,直到今天我想追加B是一个大阵,才符合坑。
复制代码代码如下所示:
=新数组();
b =新数组(125624);
A.push.apply(A,B);
上面的代码在Mac的Chrome下抛出以下异常
Uncaught RangeError:最大堆栈大小超过
如果数组被转换为新数组(125623),那么一个小元素就更好了。经过测试,其他浏览器也有大的数组出错,但不同浏览器的阈值也不同。
这里的建议是一个古老而现实的foreach,不仅避免了大型阵列的例外,但也要考虑,从性能的角度来看是最快的。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。