js 对象、数组互转

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路js 对象、数组互转,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

如题

1. 如何判断返回数据类型

首先:

typeof的返回值共有七种:
number, boolean, string, undefined, object, function,symbol.

1、number

typeof(10);
typeof(NaN);
//NaN在JavaScript中代表的是特殊非数字值,它本身是一个数字类型。
typeof(Infinity);

2、boolean

typeof(true);
typeof(false);

3、string

typeof(“abc”);

4、undefined

typeof(undefined);
typeof(a);//不存在的变量

5、object

对象,数组,null返回object
typeof(null);
typeof(window);

6、function

typeof (Array)

typeof(Date)

7、symbol

typeof Symbol() // ES6提供的新的类型

根据以上我们知道,对于对象和数组,typeof返回的都是Object,那么,如何获取返回数据的数据类型呢?

① typeof + length:

let a = {"name": "zhangsan"};
let b = [0,1,2];
var getDataType = function(o){
    if(typeof o == 'object'){
        if( typeof o.length == 'number' ){
            return 'Array'; 
        }else{
            return 'Object';    
        }
    }else{
        return 'param is no object type';
    }
};

② instance(简单,推荐):

alert( a instanceof Object );  // true
alert( b instanceof Array );  // true

判断确认数据类型后,就需要根据需求进行一系列转化了。

2. 对象 ——> 数组

(对象数组转为数组):

let objTest = {
	 arr1: [1,2,3],
	 arr2: [7, 8, 9],
	 arr3: ["zhangsan", 15, "男"]
};
console.log(objTest instanceof Object);  // 判断objTest数据类型是不是对象
let arrList2 = [];
for (let i in objTest) {
  arrList2.push(objTest[i]);
}
console.log(arrList2);

(对象属性转为数组):

let obj = {
    arr1: [1,2,3],
    arr2: [7, 8, 9],
    arr3: ["zhangsan", 15, "男"]
};
let obj1 = {"name": "zhangsan", "age": 10};
// ...

let arr4 = Object.keys(obj);
console.log(arr4);   // ['arr1', 'arr2', 'arr3']
let arr5 = Object.keys(obj1);
console.log(arr5);  // ['name', 'age']

(对象值转为数组):

let obj = {
    arr1: [1,2,3],
    arr2: [7, 8, 9],
    arr3: ["zhangsan", 15, "男"]
};
let obj1 = {"name": "zhangsan", "age": 10};
// ...

let arr4 = Object.values(obj);
console.log(arr4);   // [[1,2,3], [7,8,9], ["zhangsan", 15, "男"]]
let arr5 = Object.values(obj1);
console.log(arr5);  // ['zhangsan', 10]

(特殊——Array.from(object)):
from() 方法从具有 length 属性或可迭代对象的任何对象返回 Array 对象。
object中必须有length属性,返回的数组长度取决于length长度。
key值必须为数值。(亲测非数值转换失败)

let obj = {
    1: [1,2,3],
    2: [7, 8, 9],
    3: ["zhangsan", 15, "男"]
};
let obj1 = {"name": "zhangsan", "age": 10};

let arr = Array.from(obj);  //object中必须有length属性,返回的数组长度取决于length长度;key值必须为数值

3. 数组 ——> 对象

// 数组转对象
var arr = [1,2,3,4,5,6]
let obj = {}


// 1.使用for in 遍历
for(let key in arr) { //这里key索引
  obj[key] = arr[key]
}


// 2.使用es6展开运算符
let obj = {...arr}

// 3.使用for循环
for(let i = 0; i < arr.length; i ++) {
  obj[arr[i]] = arr[i]; //数组转为对象,对象的键=数组值, 对象的值=数组值
}

// 4. assign
obj = (Object.assign({}, array)
console.log(obj);// {1,2,3,4,5,6}

自律体现在选择此时想要的还是最终最想要的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/157272.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!