百度
360搜索
搜狗搜索

对象转数组,非数组对象怎么转换成数组详细介绍

本文目录一览: 类数组对象(Array-like)转化为数组(Array)的几种方法

伪数组对象(Array-like):拥有一个 length 属性和若干索引属性的任意对象。
工作中碰到过几次需要将类数组对象转化为数组处理的情况,面试时也很可能被问到,因为这一个题目同时考察了以下几点:

下面我们就来总结一下类数组对象(Array-like)转化为数组(Array)的几种方法:

slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。

slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。你只需将该方法绑定到这个对象上。 一个函数中的 arguments 就是一个类数组对象的例子。

你也可以简单的使用 [].slice.call(arguments) 来代替

splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。

和slice相似,不同的是会改变原对象,并且第一个参数(开始位置)必须传:

concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

这里利用apply可以把类数组对象分解成多个参数传入concat方法:

Array.from() 方法从一个类似数组或可迭代对象中创建一个新的,浅拷贝的数组实例。 可以通过以下方式来创建数组对象:

Array.from的方便之处是它的第二个参数可以设置一个函数,新数组中的每个元素会执行该函数:

利用set中元素的唯一性,和Array.from可以把set转化为array的能力,我们可以封装一个数组去重的函数:

注意以上方式都是浅拷贝,处理引用类型时需要多加小心。

对象转换为数组的方法

第一步,双击打开HBuilder编辑工具,新建静态页面Array.html,如下图所示:
请点击输入图片描述
第二步,在title标题下方,添加script标签;并在script标签内声明一个变量arr,调用Array.from,参数为youhai,如下图所示:
请点击输入图片描述
第三步,保存代码并在浏览器中预览,打开浏览器控制台,查看打印结果,如下图所示:
请点击输入图片描述
第四步,修改JS代码,定义一个对象变量obj,然后使用Array.from方法将其转换成数组,如下图所示:
请点击输入图片描述
第五步,再次预览界面,查看浏览器中打印的结果,可以看到数组长度为0,如下图所示:
请点击输入图片描述
第六步,返回到HBuilder工具,在对象obj中添加length属性,属性值为4;查看浏览器控制台,发现数组有四个未定义元素,如下图所示:
请点击输入图片描述
请点击输入图片描述
第七步,将对象obj的属性名称改为数组的索引值,从0开始,然后再次保存查看打印结果,如下图所示:
请点击输入图片描述

如何把JS对象转成数组

如何把JS对象转成数组

1. 前言

首先,当JS对象是键值对的情况时(Json对象),因为数组时以数字为索引的,所以只能把JS对象中的Key或者Value组成数组使用。

2. 样例如下:

var?obj={"one":"I am 1","two":"I am 2"};

var?arr = Object.getOwnPropertyNames(obj);?//arr=["one", "two"]

var?arr2 = Object.keys(obj);//arr=["one", "two"]

var?valArr = arr.map(function(i){return?obj[i]});//["I am 1", "I am 2"]

var?valArr2 = arr2.map(function(i){return?obj[i]});//["I am 1", "I am 2"]

//或者2,4和3,5各自合并成一条语句

var?valArr22 = Object.keys(obj).map(function(i){return?obj[i]});//["I am 1", "I am 2"]

javascript类库如何将类对象转换成数组对象代码实例详解

我们看看各大类库的处理: //jQuery的makeArray var makeArray = function( array ) { var ret = []; if( array != null ){ var i = array.length; // The window, strings (and functions) also have 'length' if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval ) ret[0] = array; else while( i ) ret[--i] = array[i]; } return ret; }jQuery对象是用来储存与处理dom元素的,它主要依赖于setArray方法来设置与维护长度与索引,而setArray的参数要求是一个数组,因此makeArray的地位非常重要。这方法保证就算没有参数也要返回一个空数组。 Prototype.js的$A方法 function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }mootools的$A方法 function $A(iterable){ if (iterable.item){ var l = iterable.length, array = new Array(l); while (l--) array[l] = iterable[l]; return array; } return Array.prototype.slice.call(iterable); };Ext的toArray方法 var toArray = function(){ return isIE ? function(a, i, j, res){ res = []; Ext.each(a, function(v) { res.push(v); }); return res.slice(i || 0, j || res.length); } : function(a, i, j){ return Array.prototype.slice.call(a, i || 0, j || a.length); } }()Ext的设计比较巧妙,功能也比较强大。它一开始就自动执行自身,以后就不用判定浏览器了。它还有两个可选参数,对生成的纯数组进行操作。 最后看dojo的_toArray,dojo的实现总是那么怪异的。 和Ext一样,后面两个参数是可选,只不过第二个是偏移量,最后一个是已有的数组,用于把新生的新组元素合并过去。 (function(){ var efficient = function(obj, offset, startWith){ return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0)); }; var slow = function(obj, offset, startWith){ var arr = startWith||[]; for(var x = offset || 0; x >obj.length; x++){ arr.push(obj[x]); } return arr; }; dojo._toArray = dojo.isIE ? function(obj){ return ((obj.item) ? slow : efficient).apply(this, arguments); } : efficient; })();

阅读更多 >>>  numpy是什么,Python入门教程(二):Numpy数组基础

如何把JSON对象转成数组

有两种方法实现:
(1)直接转换:
创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList

persons = new ArrayList

();

for (int i = 0; i < 3; i++) {

persons.add(new Person("138******67", "女", true, "北京朝阳区"));//填充Java实体类集合

}

JSONArray array = new JSONArray();// Json格式的数组形式

JSONObject obj;//json格式的单个对象形式

for (int i = 0; i < persons.size(); i++) {

obj = new JSONObject();

//依次填充每一个Java实体对象

try {

obj.put("phone", persons.get(i).getPhone());//json通过put方式以key-value形式填充

obj.put("sex", persons.get(i).getSex());

obj.put("married", persons.get(i).getMarried());

obj.put("address", persons.get(i).getAddress());

array.put(obj);//将JSONObject添加入JSONArray

} catch (JSONException e) {

e.printStackTrace();

}

}

(2)通过GSON工具实现:

只需要创建GSON对象,通过toJson方法转换即可。如例:

//模拟Java数据

Person person = new Person("敏敏", 23, "女", "北京市海淀区");

//创建GSON对象

Gson gson = new Gson();

//调用toJson方法即可转换为字符串的json格式

String json = gson.toJson(person);

PHP中怎么把对象转换为关联数组

可以用函数get_object_vars将对象转换为属性组成的关联数组,其语法如下:
$arr1=get_object_vars($obj);//$obj为需要转换的对象,下同也可以用强制类型转换,如:
$arr1=(array)$obj;或者这样:
$arr1=settype($obj,"array");

将一个类数组对象转化为数组的几种方法

在利用jQuery EasyUI框架进行程序开发时,碰到前台将JSON格式数据传递到服务器后台,经php的json_decode函数转换成的数组由于为对象数组,php程序无法对数据进行正常处理的情况,为此需要开发一个PHP回调函数(objarray_to_array)将对象数组转换成普通数组。
/**
* 对象数组转为普通数组
*
* AJAX提交到后台的JSON字串经decode解码后为一个对象数组,
* 为此必须转为普通数组后才能进行后续处理,
* 此函数支持多维数组处理。
*
* @param array
* @return array
*/
function objarray_to_array($obj) {
$ret = array();
foreach ($obj as $key => $value) {
if (gettype($value) == "array" || gettype($value) == "object"){
$ret[$key] = objarray_to_array($value);
}else{
$ret[$key] = $value;
}
}
return $ret;
}

java 怎么样把对象转换为byte数组

response.getOutputStream().write("hello world".getBytes());"hello world".getBytes();这个是将字符串对象 转成字节数组;InputStream in= request.getInputStream();byte[] buf=new byte[1024];int len=0;while((len=in.read())!=-1){ String str= new String(buf,0,len); System.out.println(str);}上面是将 字节码数组 转换为 字符串

非数组对象怎么转换成数组

这次给大家带来非数组对象怎么转换成数组,非数组对象转换成数组的注意事项有哪些,下面就是实战案例,一起来看一下。前言本文主要汇总了一些JS从非数组对象转数组的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。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)Array.from(obj)该方法可以将类数组对象和可迭代对象转换为数组类数组对象上文已提及,何为可迭代对象?Array、Set、Map 和字符串都是可迭代对象(WeakMap/WeakSet 并不是可迭代对象)字符串变成了可迭代对象,解决了编码的问题这些对象都有默认的迭代器,即具有 Symbol.iterator 属性可以用 for of 循环所有通过生成器创建的迭代器都是可迭代对象document.getElementsByTagName("p") 返回的是可迭代对象但不是一个数组Array.isArray(document.getElementsByTagName('p')) 返回 false通过生成器创建可迭代对象let obj = { '0': 3, '1': 13, '2': 23, '3': 33}function *createIterator(obj){ for(let value in obj){ yield obj[value] }}let iterator = createIterator(obj)let arr = Array.from(iterator)// [3, 13, 23, 33]改造对象本身,使其成为可迭代对象默认情况下,开发者定义的对象都是不可迭代对象,但如果给 Symbol.iterator 属性添加一个生成器,则可以将其变为可迭代对象let obj = { '0': 3, '1': 13, '2': 23, '3': 33}obj[Symbol.iterator] = function* () { for(let value in this){ yield this[value] }}let arr = Array.from(obj)// [3, 13, 23, 33]判断对象是否为可迭代对象的方法typeof obj[Symbol.iterator] === 'function'一点延伸 for of 与 forEach 与 for infor of 用于循环可迭代对象,包括有 Array, Set, Map, 字符串而 Array, Set, Map 都有 forEach 方法另外,NodeList 不是 Array, Set, Map,但是一个可迭代对象,可以用 for of 遍历此外,用 for of 循环对象时可以通过 break 提前终止,而 forEach 无法提前跳出循环for in 遍历对象的可枚举属性,包括其原型链上的属性,且不保证顺序若要遍历对象自身的可枚举属性,使用 hasOwnProperty() 方法来确定属性是否时对象自身属性Object.getOwnPropertyNames(obj) , 返回对象自身可枚举或不可枚举属性反正已经扯远了,那就再扯远一点, Object.assign() 方法将所有可枚举属性的值从一个或多个源对象复制到目标对象[?obj]展开运算符可以将可迭代对象转换为数组例如, [...'obj'] 返回 ["o", "b", "j"]字符串去重[...new Set('objobj')]Object.values(obj)默认情况下,开发者定义的对象都是不可迭代对象,但提供了返回迭代器的方法entries()values()keys()通过使用这些方法,可以返回相关的数组与类数组对象需要对象有 length 值不同,Object.values(obj) 返回对象自身可枚举属性值的集合let obj = { '0': 3, '1': 13, '2': 23, '3': 33}let arr = Object.values(obj) // [3, 13, 23, 33]字符串与数组的关系在很大程度上,可以将字符串看成字符串数组,都有 length 属性都有 concat() / indexOf() / includes() / slice() 方法不过值得注意的是, string 上没有方法可以原地修改它自身的内容,都是返回新的 stringstring 还有个 repeat() 方法,创建指定数量的字符串副本相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:node自定义命令行工具Vue全局引入bass.scss步骤详解

阅读更多 >>>  会计要素定义是什么

网站数据信息

"对象转数组,非数组对象怎么转换成数组"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:对象转数组,非数组对象怎么转换成数组的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!