javascript中的对象转数组的方法

1. 对象没有length属性
2.Array.prototype.slice.call(obj)能将具有length属性的对象转成数组,不带length属性的对象,只能声明数组去转换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
              // 1. 对象没有length属性
             //     Array.prototype.slice.call(obj)能将具有length属性的对象转成数组,不带length属性的对象,只能声明数组去转换
    let obj = {0: 'a', 1: 'b', 2:'c',length:3};
    let obj1 = {0: 'a', 1: 'b', 2:'c'};
    let arr = Array.from(obj); // ['a','b','c'];
    var arr2=[];
   for(var i in obj){
        arr2.push(obj[i]);
   }
  var arr3= Array.prototype.slice.call(obj)
    console.log(arr,arr2,arr3);


    //会输出undefined,因为对象是没有length属性的。
   // console.log(obj1.length);
    


     function test(a, b, c, d) {
            var arg = Array.prototype.slice.call(arguments, 1);
            alert(arg);
        }
        test("a", "b", "c", "d"); //b,c,d

//通用的转化数组的方法
        var toArray = function (s) {
            if (s.length) {
                return Array.prototype.slice.call(s);
            }
            else {
                var arr = [];
                for (var i in s) {
                   arr[i] = s[i];
                    //or
                   // arr.push(s[i]);
                }
                return arr;
            }

        }
    console.log(toArray(obj1));


    var t={
         id:2,
         name:"zain",
         sex:'男'
    };
    console.log(toArray(t));
    console.log(t['name'],t.name);





    </script>


</body>
</html>

  

猜你喜欢

转载自www.cnblogs.com/zhumeiming/p/9959181.html