GVKun编程网logo

可以在JavaScript中连接array.push()吗?(javascript array push)

16

以上就是给各位分享可以在JavaScript中连接array.push()吗?,其中也会对javascriptarraypush进行解释,同时本文还将给你拓展Array的push与unshift方法性

以上就是给各位分享可以在JavaScript中连接array.push()吗?,其中也会对javascript array push进行解释,同时本文还将给你拓展Array的push与unshift方法性能比较分析_javascript技巧、isArray()函数(JavaScript中对象类型判断的几种方法)_javascript技巧、JavaScript Array () 对象:push () 和 join () 方法、Javascript Array filter()和Javascript Array map()等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

可以在JavaScript中连接array.push()吗?(javascript array push)

可以在JavaScript中连接array.push()吗?(javascript array push)

我有3个单独的数组,我正在将它们全部加载到一个数组中.我可以使用.push()几个数组到一个吗?有可能吗?
var activeMembers=[];      // Active Users
 var noactiveMsg=[];        // Non-Active Users with a Pending Message
 var noactiveNomsg=[];      // Non-Active Users without a Pending Message
 var chatCenterMembers=[];          // Final Array of Chat Center Members


 chatCenterMembers.push(activeMembers).push(noactiveMsg).push(noactiveNomsg);

有没有办法链接.push()?

解决方法

chatCenterMembers.push(activeMembers,noactiveMsg,noactiveNomsg)

Array的push与unshift方法性能比较分析_javascript技巧

Array的push与unshift方法性能比较分析_javascript技巧

从原理就可以知道,unshift的效率是较低的。原因是,它每添加一个元素,都要把现有元素往下移一个位置。但到底效率差异有多大呢?下面来测试一下。
测试环境的主要硬件:CPU T7100(1.8G);内存4G DDR2 667;硬盘5400转。主要软件:操作系统为Windows 7;浏览器为Firefox 3.6.9。测试代码:

复制代码 代码如下:

var arr = [ ], s = +new Date;
// push性能测试
for (var i = 0; i   arr.push(i);
}
console.log(+new Date - s);
s = +new Date;
arr = [ ];
// unshift性能测试
for (var i = 0; i   arr.unshift(i);
}
console.log(+new Date - s);

这段代码分别执行了50000次push和unshift操作,运行一次以后,得出结果:
12
1152
可见,unshift比push要慢差不多100倍!因此,平时还是要慎用unshift,特别是对大数组。那如果一定要达到unshift的效果,有没有其他方法呢?答案是肯定的。
Array有一个叫做reverse的方法,能够把一个数组反转。先把要放进数组的元素用push添加,再执行一次reverse,就达到了unshift的效果。比如:
复制代码 代码如下:

for (var i = 0; i   arr.push(i);
}
arr.reverse();

reverse的性能又如何呢,下面再来测试:
复制代码 代码如下:

var arr = [ ], s = +new Date;
for (var i = 0; i   arr.push(i);
}
arr.reverse();
console.log(+new Date - s);

结果是:
12
可见,reverse性能极高,甚至于没有额外的消耗,可以放心使用。

isArray()函数(JavaScript中对象类型判断的几种方法)_javascript技巧

isArray()函数(JavaScript中对象类型判断的几种方法)_javascript技巧

1) typeof 运算符
typeof 是一元运算符,返回结果是一个说明运算数类型的字符串。如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在)。
但 typeof 的能力有限,其对于Date、RegExp类型返回的都是"object"。如:

typeof {}; // "object"
typeof []; // "object"
typeof new Date(); // "object"

所以它只在区别对象和原始类型的时候才有用。要区一种对象类型和另一种对象类型,必须使用其他的方法。如:instanceof 运算符或对象的 constructor 属。

2)instanceof 运算符。
instanceof 运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。如:

[] instanceof Array; // true
[] instanceof Object; // true
[] instanceof RegExp; // false
new Date instanceof Date; // true

所以,可以用instanceof运算符来判断对象是否为数组类型:

function isArray(arr)
{
return arr instanceof Array;
}

3)constructor 属性。
JavaScript中,每个对象都有一个constructor属性,它引用了初始化该对象的构造函数,常用于判断未知对象的类型。如给定一个求知的值通过typeof运算符来判断它是原始的值还是对象。如果是对象,就可以使用constructor属性来判断其类型。所以判断数组的函数也可以这样写:

function isArray(arr)
{
return typeof arr == "object" && arr.constructor == Array;
}

很多情况下,我们可以使用instanceof运算符或对象的constructor属性来检测对象是否为数组。例如很多JavaScript框架就是使用这两种方法来判断对象是否为数组类型。
但是检测在跨框架(cross-frame)页面中的数组时,会失败。原因就是在不同框架(iframe)中创建的数组不会相互共享其prototype属性。例如:
复制代码 代码如下:

<script> <BR>window.onload=function(){ <BR>var iframe_arr=new window.frames[0].Array; <BR>alert(iframe_arr instanceof Array); // false <BR>alert(iframe_arr.constructor == Array); // false <BR>} <BR></script>





在Ajaxian上看到了一种精确的检测方法,跨原型链调用toString()方法:Object.prototype.toString()。可以解决上面的跨框架问题。

当Object.prototype.toString(o)执行后,会执行以下步骤:
1)获取对象o的class属性。
2)连接字符串:"[object "+结果(1)+"]"
3)返回 结果(2)

例如:

Object.prototype.toString.call([]); // 返回 "[object Array]"
Object.prototype.toString.call(/reg/ig); // 返回 "[object RegExp]"

这样,我们就可以写一个健壮的判断对象是否为数组的函数:
复制代码 代码如下:

function isArray(arr)
{
return Object.prototype.toString.call(arr) === "[object Array]";
}

此种方法得到国外多个javaScript大师的认可,在即将发布的jQuery 1.3中将使用这种方法来检测数组。

prototype.js的一个维护者写了下面这个函数,用于获取对象的类型名

function __getClass(object)
{
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
};

扩展一下,用于检测各种对象类型:
复制代码 代码如下:

var is =
{
types : ["Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window", "HTMLDocument"]
}

for(var i = 0, c; c = is.types[i ++ ]; )
{
is[c] = (function(type)
{
return function(obj)
{
return Object.prototype.toString.call(obj) == "[object " + type + "]";
}
}
)(c);
}
alert(is.Array([])); // true
alert(is.Date(new Date)); // true
alert(is.RegExp(/reg/ig)); // true

JavaScript Array () 对象:push () 和 join () 方法

JavaScript Array () 对象:push () 和 join () 方法

1 <script>
2 var fruits = ["Banana", "Orange", "Apple", "Mango"];
3 function myFunction(){
4 fruits.push("Kiwi","Lemon","Pineapple") 5 var x=document.getElementById("demo");
6 x.innerHTML=fruits;
7 }
8 </script>

push ():向数组的末尾添加一个或更多元素,并返回新的长度。

1 <p id="demo">点击按钮将数组作为字符串输出。</p>
2 <button onclick="myFunction()">点我</button>
3 <script>
4 function myFunction(){
5     var fruits = ["Banana", "Orange", "Apple", "Mango"];
6     var x=document.getElementById("demo");
7     x.innerHTML=fruits.join();
8 }
9 </script>

join ():把数组中的所有元素转换成一个字符串。将数组作为字符串输出。

join(separator):separator,可选,指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符

 

Javascript Array filter()和Javascript Array map()

Javascript Array filter()和Javascript Array map()

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

语法:

    array.filter(function(currentValue,index,arr), thisValue)

filter()有三个参数,分别是正在处理的当前元素、该元素的索引以及调用该方法的数组。后两者是可选项。
filter()返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

=========================================================

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

语法:

    array.map(function(currentValue,index,arr), thisValue)

map()有三个参数,分别是正在处理的当前元素、该元素的索引以及调用该方法的数组。后两者是可选项。
map()返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值.

关于可以在JavaScript中连接array.push()吗?javascript array push的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Array的push与unshift方法性能比较分析_javascript技巧、isArray()函数(JavaScript中对象类型判断的几种方法)_javascript技巧、JavaScript Array () 对象:push () 和 join () 方法、Javascript Array filter()和Javascript Array map()等相关知识的信息别忘了在本站进行查找喔。

本文标签: