从JavaScript中的对象返回两个单独的数组

时间:2015-06-18 12:00:35

标签: javascript arrays object

我需要完成keysAndValues函数,以便它接受一个对象并将键和值作为单独的数组返回。例如:

keysAndValues({k: 11, l: 12, m: 13}) // should return [['k', 'l', 'm'], [11, 12, 13]]

我已经尝试过:http://jsfiddle.net/marcusdei/ppfh5fpa/4/

4 个答案:

答案 0 :(得分:3)

试试这个



function keysAndValues(data){
    var keys = Object.keys(data),
        values = keys.map(function (key) {
            return data[key];
        });
    
    return [keys, values]; 
}

console.log(keysAndValues({k: 11, l: 12, m: 13}));




  

Object.keys - Object.keys()方法返回给定的数组   对象自己的可枚举属性

     

.map - map()方法创建一个结果为的新数组   在这个数组中的每个元素上调用一个提供的函数。

<强>更新

新方法.values已添加到Object

&#13;
&#13;
function keysAndValues(data){
  return [Object.keys(data), Object.values(data)]; 
}

console.log(keysAndValues({k: 11, l: 12, m: 13}));
&#13;
&#13;
&#13;

  

Object.values - 该方法返回给定对象自身的可枚举属性值的数组,其顺序与for...in循环提供的顺序相同

答案 1 :(得分:0)

尝试:

&#13;
&#13;
function keyValues(obj, keys){
	return [keys = Object.keys(obj), keys.map(function(k){return obj[k]})]
}

var result = keyValues({k: 11, l: 12, m: 13});

document.write(JSON.stringify(result))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

以老式的方式,定义两个数组并将键和值推入其中。

function keysAndValues(obj) {
    var keys = [], values = [];
    for (var p in obj) {
        keys.push(p);
        values.push(obj[p]);
    }
    return [keys, values];
}

JSPerf says this has the better performance by far

答案 3 :(得分:0)

function keysAndValues(obj) {
    var keys = [];
    var value = [];
    for (key in obj) {
        keys.push(key);
        value.push(obj[key]);
    }
    return [keys,value]

}
console.log(keysAndValues({
    k: 11,
    l: 12,
    m: 13
}));