将对象文字更改为多维数组

时间:2016-11-15 06:19:48

标签: javascript arrays multidimensional-array key-value

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

例如这个



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']]

如何编写函数来执行此操作?优选没有循环。

5 个答案:

答案 0 :(得分:1)

使用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);

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

答案 1 :(得分:1)

虽然对象的键没有顺序,但我建议使用数组保存顺序,并使用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; }




答案 2 :(得分:0)

_.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

答案 3 :(得分:0)

你可以做这样的事情

检查此代码段



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

console.log(arr);




希望有所帮助

答案 4 :(得分:0)



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)