将对象文字表示法转换为数组

时间:2012-01-31 13:28:22

标签: javascript jquery arrays object-literal

我使用文字作为字典,但第三方绑定工具只接受数组。

这是一种方式,有更好的方法吗?

var arr = [];
$.each(objectLiteral, function () { arr.push(this); });

5 个答案:

答案 0 :(得分:9)

我认为您的解决方案没有任何问题。

这是一个较短的一个:

var arr = $.map(objectLiteral, function (value) { return value; });

答案 1 :(得分:7)

您的方法很好,清晰易读。要在没有jQuery的情况下执行此操作,请使用for (..in..)语法:

var arr = [];
for (prop in objectLiteral) {
  arr.push(objectLiteral[prop]);
}

答案 2 :(得分:2)

在香草JS ......

如果我们想要转换对象文字

var obj = {
 species: 'canine',
 name: 'Charlie',
 age: 4
}

进入数组数组

[['species', 'canine'], ['name', 'Charlie'], ['age', 4]]

这是一种方式

function objToArr(obj){
  var arr = [];

  for (var key in obj){
    arr.push([key, obj[key]]);
  }
  return arr;
}

答案 3 :(得分:0)

在ES2017中,您现在可以使用Object.entries,并且在ES6解构支持下,可以很好地使用结果数组,例如

Object.entries(objectLiteral).filter(([key, value]) => !!value).map(([key, value]) => key)

为您提供带有值的所有属性

答案 4 :(得分:0)

const objectLiteral = { hell: 'devil' };

const ver1 = Object.keys(objectLiteral); // ['hell']
const ver2 = Object.values(objectLiteral); // ['devil']
const ver3 = Object.entries(objectLiteral); // [['hell', 'devil']]

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/keys https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/values https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Object/entries