javascript怎样将object类型转换成array数组

 我来答
深眠者
高粉答主

推荐于2019-11-12 · 每个回答都超有意思的
知道答主
回答量:40
采纳率:0%
帮助的人:9518
展开全部

1、object无法直接转换为array,两个是不同的类型和数据结构。

2、object中的结构是一个属性=值的结构模式,而array是数字索引=值的结构模式

3、如果确实根据一定的业务逻辑能转换,则需要循环

扩展资料:

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

日常用途

嵌入动态文本于HTML页面。

对浏览器事件做出响应。

读写HTML元素。

在数据被提交到服务器之前验证数据。 

检测访客的浏览器信息。 

控制cookies,包括创建和修改等。 

基于Node.js技术进行服务器端编程。 

参考资料:百度百科:JavaScript

总是在天真shy
推荐于2019-09-13 · TA获得超过966个赞
知道答主
回答量:9
采纳率:0%
帮助的人:1.1万
展开全部

1、Array.prototype.slice.call(obj)

该方法可以将类数组对象转换为数组,所谓类数组对象,就是含 length 和索引属性的对象

返回的数组长度取决于对象 length 属性的值,且非索引属性的值,或索引大于 length 的值都不会被返回到数组中

实锤如下:

let obj = { '0': 3, '1': 13, '2': 23, '3': 33, 'length': 3, 'name': 330}let arr = Array.prototype.slice.call(obj)// [3, 13, 23]  

简洁写法 [].slice.call(obj)

2、Array.from(obj)

该方法可以将类数组对象和可迭代对象转换为数组

类数组对象上文已提及,何为可迭代对象?

Array、Set、Map 和字符串都是可迭代对象(WeakMap/WeakSet 并不是可迭代对象)

字符串变成了可迭代对象,解决了编码的问题

这些对象都有默认的迭代器,即具有 Symbol.iterator 属性

可以用 for of 循环

所有通过生成器创建的迭代器都是可迭代对象

document.getElementsByTagName("div") 返回的是可迭代对象但不是一个数组

Array.isArray(document.getElementsByTagName('div')) 返回 false

扩展资料:

字符串与数组的关系

在很大程度上,可以将字符串看成字符串数组,

都有 length 属性

都有 concat()() / indexOf() / includes() / slice() 方法

不过值得注意的是, string 上没有方法可以原地修改它自身的内容,都是返回新的 string

string 还有个 repeat() 方法,创建指定数量的字符串副本

参考资料:脚本之家-JS从非数组对象转数组的方法小结

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
awl805
推荐于2017-10-05 · TA获得超过392个赞
知道小有建树答主
回答量:302
采纳率:100%
帮助的人:316万
展开全部
原则上obj是不能转换成数组的。
首先array也是obj。只是一个特殊的object。

obj一个很关键的点,是拥有成员和方法,撇开方法不说,obj就是一个key-value结构。也就是哈希数组,而js的数组只能是由数字索引组成的。撇开了key,只留下value的话数据丢失太多。如果保留了key,那么就是哈希数组,而在js里面,哈希数组属于obj,不属于array。

强制转换如下。
var arr = [];
for(i in obj){
arr.push(i);
}
强制转换的话,会有多余的参数比如length等出现,而且,会出现一些东西无法调用。
所以不建议转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草率大先生
2019-03-14
知道答主
回答量:2
采纳率:0%
帮助的人:1303
展开全部
function convert(obj){

var data = new Array();
data = Array.prototyped.concat("",obj);
data.shift();
return data;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iamXiaMi
推荐于2017-09-02 · TA获得超过1711个赞
知道大有可为答主
回答量:2734
采纳率:0%
帮助的人:2256万
展开全部
有条件的
object不能带function

自己循环object后,按key->value放Array对象里就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式