将对象字面量更改为多维数组

Changing an object literal into a multidimensional array

本文关键字:数组 对象      更新时间:2023-09-26

我试图将对象文字键值对更改为数组的数组。

例如

var d = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
}
function objToArray(obj) {
  var arr = [];
  for (var k in obj) {
    arr.push(obj[k]);
  }
  return arr;
}
var result = objToArray(d);
console.log(result)

应该返回这个[['rhino', 'mozilla'], ['chrome', 8], ['engine', 'v8']]

我怎么能写一个函数来做到这一点?最好没有循环。

使用Object.keysArray#map方法

你的进近已更新

var d = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
}
function objToArray(obj) {
  var arr = [];
  for (var k in obj) {
    arr.push([k,obj[k]]);
  }
  return arr;
}
var result = objToArray(d);
console.log(result)

ES5

var obj = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
};
var res = Object.keys(obj).map(function(k) {
  return [k, obj[k]]
});
console.log(res);

ES6

var obj = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
};
var res = Object.keys(obj).map(x=>[x, obj[x]]);
console.log(res);

供参考:由于对象属性没有任何顺序,结果数组的顺序可能会改变。

虽然对象的键没有顺序,但我建议保持键数组的顺序,并将值映射为Array#map

var object = { rhino: 'mozilla', chrome: 8, engine: 'v8' }, 
    keys = ['rhino', 'chrome', 'engine'],
    result = keys.map(function (key) {
        return [key, object[key]];
    });
                      
 console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

ES6

var object = { rhino: 'mozilla', chrome: 8, engine: 'v8' }, 
    keys = ['rhino', 'chrome', 'engine'],
    result = keys.map(key => [key, object[key]]);
                      
 console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

你可以这样做

检查这个片段

var obj = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
}
var arr = Object.keys(obj).map(function(key) {
  return [key, obj[key]];
});
console.log(arr);

希望有所帮助

var d = {
  rhino: 'mozilla',
  chrome: 8,
  engine: 'v8'
}
function objToArray(obj) {
  var arr = [];
  for (var k in obj) {
    var ls = [k,obj[k]];
    arr.push(ls);
  }
  return arr;
}
var result = objToArray(d);
console.log(result)

使用_.zip与lodash 4.

function objToArray(obj) {
  if(!obj || typeof obj !== 'object') {
    return false;
  }
  return _.zip(_.keys(obj), _.values(obj));
}

查看工作版本:http://jsbin.com/qokisoqapu/edit?js,console