将对象字面量更改为多维数组
Changing an object literal into a multidimensional array
我试图将对象文字键值对更改为数组的数组。
例如
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.keys
和Array#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
相关文章:
- 将数组对象传递到struts2中的操作类
- 如何使用jquery返回php-json数组对象
- 从其名称获取javascript数组对象
- 值未与数组对象绑定
- 如何按数组/对象值的倍数过滤对象数组
- 在表中显示数组对象
- 在数组对象中分组
- 将第二个或多个数组推送到数组对象 AngularJS 中
- 重新排列 JavaScript 数组/对象
- 键上的javascript数组对象过滤器
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 重建有角度的java脚本数组对象
- 对JSON数组对象进行排序
- 连接与数组对象相关的文本:方式和位置
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 如何使用Handlebars循环数组对象和模板
- 是否可以引用JS数组/对象中的另一个元素
- Javascript中的名称索引-数组/对象
- 数组长度不等于数组对象