js脚本处理中,有时候为了方便操作需要将js的对象转成数组,具体的转换方式有很多种,可以参考下面的转换方法!

js将对象中的键转成数组的方法

示例代码:

var obj = { "name": "mochu", "host": "feiniaomy.com", "age": "20", "sex": "男" };
//方案1
var arr = Object.getOwnPropertyNames(obj); 
console.log(arr);
//方案2
var arr2 = Object.keys(obj);
console.log(arr2);

控制台打印结果:

["name", "host", "age", "sex"]

js将对象中的值转成数组的方法

想要提取对象中的属性值,需要先得到它的键名,需要借助上面的方法!

示例1:

var obj = { "name": "mochu", "host": "feiniaomy.com", "age": "20", "sex": "男" };
//方案1
var arr = Object.getOwnPropertyNames(obj);
var arr_val = arr.map(function (i) { return obj[i] });
console.log(arr_val)
//方案2
var arr2 = Object.keys(obj);
var arr_val2 = arr2.map(function (i) { return obj[i] });
console.log(arr_val2)

控制台打印结果:

 ["mochu", "feiniaomy.com", "20", "男"]

示例2:

var obj = { "name": "mochu", "host": "feiniaomy.com", "data": { "age": "20", "sex": "男" } };
var array = [];
for (var key in obj) {
    array.push(obj[key]);
}
console.log(array);

打印结果:

["mochu", "feiniaomy.com", { age: "20", sex: "男" }]

js将对象转换成键与值对应存在的数组

示例1:JS简单的对象转换成数组的方法

var obj = { "name": "mochu", "host": "feiniaomy.com"};
var array = [];
for (var key in obj) {
    array[key] = obj[key];
}
console.log(array);

打印结果:

[name: "mochu", host: "feiniaomy.com"]

示例2:JS复杂的对象转换成数组的方法

var obj = { "name": "mochu", "host": "feiniaomy.com", "data": { "age": "20", "sex": "男" }};
var array = [];
for (var key in obj) {
    array[key] = obj[key];
}
console.log(array);

打印结果:

[name: "mochu", host: "feiniaomy.com", data: { age: "20", sex: "男" }]

注意:对于复杂点对象转成数组,转换的并不彻底,针对这种情况可以参考下面的示例!

示例3:

定义一个js对象转数组的函数

function objtoarray(obj){
    var array = [];
    for (var key in obj) {
        //判断一下是否为对象
        if (Object.prototype.toString.call(obj[key]) == '[object Object]') {
            array[key] = objtoarray(obj[key]);
        } else {
            array[key] = obj[key];
        }
    }
    return array;
}

调用函数

var obj = { "name": "mochu", "host": "feiniaomy.com", "data": { "age": "20", "sex": "男" } };
var array = objtoarray(obj);
console.log(array);

PS:本篇里代码只是简单做了下测试,各位如果有需要,请测试好后再使用!