javascriptarray,javascript array reduce
javascript中Array的类型为什么是object?
typeof可以检测基本类型包括undefined、string、number、boolean,但是对于检测对象就不靠谱了。不只是Array,javascript中的对象,包括Date、String、Boolean、Number、Object、Function、Array、RegExp、Error使用typof只会返回"object"。
使用instanceof或者constructor来检测Array也不是靠谱的办法。如果是待检测的数组来自一个iframe的数组时,instanceof和contructor都会失效。由于每个iframe都有一套自己的执行环境,跨frame实例化的对象彼此是不共享原型链的。
Javascript中判断变量是数组还是对象(array还是object)
怎样判断一个JavaScript变量是array还是obiect?
答案:
1、如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。
此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。
然而,参数对象【arguments
object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array。
此外,当一个对象有a.length属性的时候,这个方法也不成立。
复制代码
代码如下:
//
Real
array
正在的数组
var
my_array
=
[];
//
Imposter!
冒名顶替的!
var
my_object
=
{};
my_object.length
=
0;
//
Potentially
faulty
潜在的错误
function
is_this_an_array(param)
{
if
(typeof
param
===
'object'
!isNaN(param.length))
{
console.log('Congrats,
you
have
an
array!');
}
else
{
console.log('Bummer,
not
an
array');
}
}
//
Works
成功
is_this_an_array(my_array);
//
Works,
but
is
incorrect
成功了,但是不正确
is_this_an_array(my_object);
2、回答这个问题的另一个答案是用一个更加隐蔽的方法,调用toString(
)方法试着将该变量转化为代表其类型的string。
该方法对于真正的array可行;参数对象转化为string时返回[object
Arguments]会转化失败;此外,
对于含有数字长度属性的object类也会转化失败。
复制代码
代码如下:
//
Real
array
真正的数组
var
my_array
=
[];
//
Imposter!
冒名顶替的!
var
my_object
=
{};
my_object.length
=
0;
//
Rock
solid
坚如磐石(检验函数)
function
is_this_an_array(param)
{
if
(Object.prototype.toString.call(param)
===
'[object
Array]')
{
console.log('Congrats,
you
have
an
array!');
}
else
{
console.log('Bummer,
not
an
array');
}
}
//
Works
成功了
is_this_an_array(my_array);
//
Not
an
array,
yay!
不是数组(array)!
is_this_an_array(my_object);
3、此外,在可能不可靠的多框架DOM环境中,instanceof是个完美合适的操作。
扩展阅读:"Instanceof
Considered
Harmful…"
复制代码
代码如下:
var
my_array
=
[];
if
(my_array
instanceof
Array)
{
console.log('Congrats,
you
have
an
array!');
}
4、对于Javascript
1.8.5(ECMAScript
5),变量名字.isArray(
)可以实现这个目的
复制代码
代码如下:
var
my_array
=
[];
if
(Array.isArray(my_array))
{
console.log('Congrats,
you
have
an
array!');
}
javascript怎样将object类型转换成array数组
1、object无法直接转换为array,两个是不同的类型和数据结构。
2、object中的结构是一个属性=值的结构模式,而array是数字索引=值的结构模式
3、如果确实根据一定的业务逻辑能转换,则需要循环
扩展资料:
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
日常用途
嵌入动态文本于HTML页面。
对浏览器事件做出响应。
读写HTML元素。
在数据被提交到服务器之前验证数据。
检测访客的浏览器信息。
控制cookies,包括创建和修改等。
基于Node.js技术进行服务器端编程。
参考资料:百度百科:JavaScript
在JavaScript中,如何定义一维数组Array?
转自网上:
new Array()
new Array(len)
new Array([item0,[item1,[item2,...]]]
使用数组对象的方法:
var objArray=new Array();
objArray.concact([item1[,item2[,....]]]-----将参数列表连接到objArray的后面形成一个新的数组并返回,原有数组不受影响。如:var arr=["a","b","c"];
arr.concact("d","e");
将返回包括从"a"到"e"字母元素的数组。而arr本身不受影响。
objArray.join(separator)---以separator指定的字符作为分割符,将数组转换为字符串,当seperator 为逗号时,其作用和toString()相同。
objArray.pop()---------通俗的讲,就是弹出数组的最后一个元素。结合下面的push方法,使得将数组作为栈来使用成为可能。pop方法返回数组最后一个元素的值,并将length属性减1,即返回后立即丢失最后一个元素。
objArray.push([value1[,value2[,....]]])-------------将参数添加到数组的结尾。如:[1,2,3, 4].push("a","b")将得到[1,2,3,4,"a","b"]
objArray.reverse()将数组中的元素反转排列。如:[1,2,3].reverse()将得到[3,2,1],这个操作是在原有数组上经行操作,同时也返回数组本身
objArray.shift()-----------移去数组的第一个元素,并返回这个元素的值。这个方法的性质和pop方法很类似,pop方法是移去最后一个元素。
objArray.slice(start,end)----------- 返回数组对象的一个子集,索引从start开始(包括 start),到end结束(不包括end),原有数组不受影响。如:[1,2,3,4,5,6].slice(1,4)将得到[2,3,4]。当 start或者end为负数时,则使用他们加上length后地值。如:[1,2,3,4,5,6].slice(-4,-1)将得到[3,4,5]。如果end小于等于start,将返回空数组。
objArray.sort(comparefn)------- 根据comparefn定义的大小比较函数,对一个数组进行排序。函数comparefn必须接受两个参数element1,element2,如果需要需要element1排在element2之前,应该返回一个负数;如果需要element1排在element2之后,应该返回一个正数,如果两个数平等对待(即保持原有顺序)则返回0。当省略comparefn时,则元素按照字典顺序排列。如:对定义的比较函数cmp: function cmp(e1,e2){return e1-e2;}则[3,4,2,7].sort(cmp)将得到[2,3,4,7].
objArray.splice(start,deleteCount[,item1,item2[,...]]]) 这是一个复杂的函数,用于完成数组元素的删除 取代和插入操作。其中,start参数表示要进行操作的索引位置,deleteCount指从start开始要删除的元素的元素个数(包括了start位置),如果deleteCount省略,则表示从start开始要删除数组的剩余部分。[,item1[,item2[,...]]]则表示可选的插入到start之前的元素列表。如:
var arr=[0,1,2,3,4,5,6];
arr.splice(1,1);
document.write(arr);//显示“0,2,3,4,5,6”
arr=[0,1,2,3,4,5,6];
arr.splice(0,0,"a","b");
document.write(arr);//显示“a,b,0,1,2,3,4,5,6"
arr=[0,1,2,3,4,5,6];
arr.splice(3,2,"c","d");
document.write(arr);//显示"0,1,2,c,d,5,6"
objArray.unshift(item1[,item2[,...]]])------------------- 将参数列表插入到数组的开头。其性质和push方法类型,但push方法是将元素添加到数组的结尾。如: [1,2,3,4].unshift("a","b")将得到["a","b",1,2,3,4]。