• 技术文章 >web前端 >前端问答

    es6怎么将类数组对象转数组

    青灯夜游青灯夜游2023-01-04 09:13:02原创79

    转换方法:1、使用“for in”语句将类数组对象转换为数组,语法“for(var i in obj){console.log(arr.push(obj[i]));}”;2、使用内置对象keys和valus,语法“Object.keys(obj)”和“Object.values(obj)”;3、使用Array对象的from()函数,语法“Array.from(obj)”。

    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

    什么是类数组?

    JavaScript中有一些看起来像却又不是数组的对象,叫做类数组。

    什么是类数组对象?

    只包含使用从0开始的,并且是自然递增的整数作为键,还定义了length用来表示元素个数的对象,通常就认为是类数组对象。

    类数组转换为数组

    第一种方法:使用for in 将类数组对象转换为数组

    <script type="text/javascript">
    		var obj = {
    			0: 'a',
    			1: 'b',
    			2: 'c',
    		};
    		console.log(obj[0]);
    		console.log(typeof obj);
    		var arr = [];
    		for(var i in obj){
    			console.log(arr.push(obj[i]));
    		}
    		console.log(arr);
    		//把类数组对象放在一个名为arr的新数组里使得obj变成了数组
    
    		console.log(arr instanceof Array);//判断arr是否为数组
    
    	</script>

    1.png

    如果想获取整个对象:

    let arr1 = []
    		for (let i in obj) {
    			let newobj = {}
    			newobj[i] = obj[i]
    			arr1.push(newobj);
    		}
    		console.log(arr1);

    2.png

    第二种方法:内置对象keys和valus

    内置对象Object.keys:获取键

    内置对象Object.values获取值

    let obj = {
    			'1': 5,
    			'2': 8,
    			'3': 4,
    			'4': 6
    		};
    		//内置对象Object.keys:获取键
    		var arr = Object.keys(obj)
    		console.log(arr);
    		//内置对象Object.values获取值
    		var arr2 = Object.values(obj)
    		console.log(arr2);

    3.png

    第三种方法:Array.from()

    let obj = {
    		'0': 5,
    		'1': 8,
    		'2': 4,
    		'3': 6,
    		'length':4
    	};
    	    let arr = Array.from(obj)
    		console.log(arr);

    Array.from()把对象转化为数组必须符合2个条件

    1:键必须是数值

    2:必须带有length的键值对

    不写length时:

    加length键值对时:

    4.png

    扩展知识:for of、for in和forEach的区别

    let arr = ['周一', '周二', '周三', '周四','周五','周六','周日']
    		// for of
    		for (let item of arr) {
    			console.log(item);
    		}
            // for in
    		for (let i in arr) {
    			console.log(i);
    		}
            // forEach
            arr.forEach(item => {
    			console.log(item);
    		})

    效果如图所示:

    5.png

    for of中 item代表数组中的某一项

    for in中 i代表索引,一般用来遍历对象

    forEach方法用于调用数组的每个元素,并将元素传递给回调函数。

    for of

    1.可以避免 for-in 循环中的所有陷阱
    2.可以使用 break, continuereturn
    3.for-of 循环不仅仅支持数组的遍历。同样适用于很多类似数组的对象
    4.它也支持字符串的遍历
    5.for-of 并不适用于处理原有的原生对象

    for in

    注:for..in循环会把某个类型的原型(prototype)中方法与属性给遍历出来,所以这可能会导致代码中出现意外的错误

    for Each

    1、foreach 方法没办法使用return,break,continue语句来跳出循环

    2、forEach方法中的function回调有三个参数:

    6.png

    (1)参数是遍历的数组内容(必需)
    (2)参数是对应的数组索引(可选)
    (3)参数是数组本身(可选)

    3、对数组的每个元素执行一次提供的函数。返回undefined

    【推荐学习:javascript视频教程

    以上就是es6怎么将类数组对象转数组的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:ES6 es6数组
    上一篇:react有什么特点 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • es6中map和object的区别是什么• es6中什么是原型链• es6对象增加新的属性是什么• es6 if包裹的变量算块内吗• es6箭头方法中this的指向是什么
    1/1

    PHP中文网