js 如何判断一个字符串是否为对象或者数组

js 如何判断一个字符串是否为对象或者数组,第1张

本来判断一个对象类型用typeof是最好的,不过对于Array类型是不适用的

可以使用 instanceof *** 作符

var arrayStr=new Array("1","2","3","4","5");

alert(arrayStr instanceof Array);

当然以上在一个简单的页面布局里面是没有问题的,如果是复杂页面情况,入获取的是frame内部的Array对象,可以用这个函数判断:

function isArray(obj) {

return ObjectprototypetoStringcall(obj) === '[object Array]';

}

有时候,我们需要将数据存储到sessionStorage和localStorage中,这样做的好处有:

1 缓存数据

2 减少对内存的占用

但是,storage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储。

1

2

3

4

5

6

7

var obj = { name:'Jim' };

sessionStorageobj = obj;

localStorageobj = obj;

var arr = [1,2,3];

sessionStorageobj = arr;

localStorageobj = arr;

上面的写法都是不能成功的!但我们可以通过JSON对象提供的parse和stringify将其他数据类型转化成字符串,再存储到storage中就可以了。请看下面的代码。

1

2

3

4

5

6

var obj = { name:'Jim' };

var str = JSONstringify(obj);

//存入 sessionStorageobj = str;

//读取 str = sessionStorageobj;

//重新转换为对象 obj = JSONparse(str);

本来判断一个对象类型用typeof是最好的,不过对于Array类型是不适用的

可以使用 instanceof *** 作符

var arrayStr=new Array("1","2","3","4","5");

alert(arrayStr instanceof Array);

当然以上在一个简单的页面布局里面是没有问题的,如果是复杂页面情况,入获取的是frame内部的Array对象,可以用这个函数判断:

function isArray(obj) {

return ObjectprototypetoStringcall(obj) === '[object Array]';

}

需要准备的材料分别有:电脑、html编辑器、浏览器。

1、首先,打开html编辑器,新建html文件,例如:indexhtml,编写问题基础代码。

2、在indexhtml中的<script>标签,输入js代码:$('body')append($('#shuz')val());。

3、浏览器运行indexhtml页面,此时shuz数组中的值被成功用js取出打印了出来。

数组:

var arr = [‘a’,‘b’,'c'];

for (let i = 0;i<arrlength;i++){

consolelog(i,arr[i])

};

对象:

var person = { name:'tom',age:'29',sex:'男‘};

// 对象如果要用for循环来遍历,需要先有Objectkey()的方法来拿到可迭代(遍历)的私有属性名的集合(数组)

var keys = Objectkeys(person);

for (let i = 0;i<keyslength;i++){

consolelog(keys[i]+":"+person[keys[i]]);

};

数组:

for(let key in arr){

// 值得注意的是,key为数组的索引,如若需要获取属性的值,则需要使用数组加索引下标 的形式来获取

consolelog(key,arr[key]);

}

对象:

for(let key in obj){

// 值得注意的是,key为对象的键名,键值要以obj[key]的方式来获取

consolelog(key,obj[key]);

}

数组:

for(let value of arr){

//值得注意的是,forof跟forin是不一样的,forin遍历的是数组的索引,forof遍历的是数组的值

consolelog(value);

}

对象:

forin是不能单独来遍历一个对象的,会报错。

如果对象是一个类数组对象,那用arrayfrom方法转成一个数组就可以用forof来遍历了。

或者结合Objectkeys()方法来使用

for(let key of Objectkeys(obj)){

// forof遍历输出的也是键名

consolelog(key,obj[obj]);

}

数组:

forEach()方法遍历数组是没有返回值

值得注意的是数组中有几项,那么传递进去的匿名回调函数就需要执行几次;

arrforEach((item,index,arr)=>{

consolelog(item,index,arr)

)

// 其中item是数组中的当前项,index是数组中的当前下标,arr是原始数组

对象:

原则上forEach是用来遍历数组的,不能遍历对象,但是可以用ObjectgetOnwPropertyNames()方法来使得对象能被forEach遍历出来。

ObjectgetOnwPropertyNames()返回一个数组,成员是参数对象自身全部属性的属性名,不管该属性是否能被遍历。

ObjectgetOnwPropertyNames(obj)forEach((item,index,arr)=>{

consolelog(item,index,obj[item])

})

var

a

=

[];

var

a

=

{};

这两种不能算真正的数组和对象,只是和数组和对象类型,其实这两种是json格式的

var

a

=

new

Array

();

var

a

=

new

Object();

这两种是真正的js的对象和数组

之所以前他们使用方法类似,是因为json和js中对象数组的使用方法类似,[]和数组都是根据索引调用的,{}和js的对象都是根据key值调用的,所以可以通用

这个就类似于你用getElementsByTagName("div")获取元素一样,它可以通过下表得到元素,但他其实也不是数组,是一个可以通过使用下表获取的集合

function loads() {

var shuz = documentgetElementById("shuz")value;

if (shuz == null || shuz == '') {

} else {

alert(shuzlength);

}

}

shuz数组是从Acton中通过request传递过来用隐藏文本接收的。。如何在js中取出来数组中的值。shuzlength可以取到对应的值。

以上就是关于js 如何判断一个字符串是否为对象或者数组全部的内容,包括:js 如何判断一个字符串是否为对象或者数组、JS 的问题,怎么获取 localStorage 已存储的数组、js怎么判断一个对象是不是类数组对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9755606.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存