将键和值对分成两个数组

时间:2011-04-13 10:51:56

标签: javascript arrays key

将键和值分成两个不同的数组的最佳方法是什么 -

var data = {"A Key": 34, "Another Key": 16, "Last Key": 10};

会成为这个 -

data1 = ["A Key", "Another Key", "Last Key"];
data2 = [34, 16, 10];

感谢。

4 个答案:

答案 0 :(得分:7)

var data = {"A Key": 34, "Another Key": 16, "Last Key": 10};

var data1 = [],
    data2 = [];

for (var property in data) {

   if ( ! data.hasOwnProperty(property)) {
      continue;
   }

   data1.push(property);
   data2.push(data[property]);

}
  1. 设置两个不同的空白数组。
  2. 遍历对象的可枚举属性。
  3. 如果data没有明确地具有此属性(即不高于原型链),请跳过此迭代。
  4. 将密钥及其值推送到各自的阵列。
  5. jsFiddle

答案 1 :(得分:2)

此函数将data对象拆分为键和值数组。它返回一个包含两个数组的对象。

function splitObj(data){
  var keys = [],
      vals = [];
  for (var l in data) {
   if (data.hasOwnProperty(l){
    keys.push(l);
    vals.push(data[l]];
   }
  }
  return {keys: keys,vals:vals};
}

答案 2 :(得分:1)

data1=[];
data2=[]
for (x in data) {
   data1.push(x);
   data2.push(data[x]);
}

答案 3 :(得分:1)

您可以使用for in循环遍历属性,然后根据需要将它们分配给数组。

确保检查密钥是否是对象的属性,而不是原型的属性。

var data1 = [];
var data2 = [];

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    data1.push(key);
    data2.push(p[key]);
  }
}