Разделите пары ключ и значение на два массива - PullRequest
3 голосов
/ 13 апреля 2011

Как лучше всего разделить ключ и значения на два разных массива, чтобы это -

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

стало бы таким -

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

Спасибо.

Ответы [ 4 ]

7 голосов
/ 13 апреля 2011
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. Нажмите клавишу и ее значение в соответствующих массивах.

jsFiddle .

2 голосов
/ 13 апреля 2011

Эта функция разделит объект 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};
}
1 голос
/ 13 апреля 2011

Вы можете просмотреть свойства с помощью цикла for in, а затем просто назначить их массивам по мере необходимости.

Убедитесь, что вы проверили, является ли ключ свойством объекта, а не прототипа.

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

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    data1.push(key);
    data2.push(p[key]);
  }
}
1 голос
/ 13 апреля 2011
data1=[];
data2=[]
for (x in data) {
   data1.push(x);
   data2.push(data[x]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...