JavaScript удаляет ключи объекта и сохраняет тот же порядок - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть объект или массив (я не уверен), который выглядит так:

0:{62: "01:30:00 - 01:45:00"}
1:{61: "01:30:00 - 01:45:00"}
2:{55: "03:15:00 - 04:15:00"}
...

Моя цель сделать так, чтобы это выглядело так:

62:"01:30:00 - 01:45:00"
61:"01:30:00 - 01:45:00"
...

Мне нужно сохранить тот же порядок, что и в первом объекте, это очень важно. Я пробовал это, но результат точно такой же.

finalOptions = [];
for (var newKey in newOptions) {
    finalOptions.push(newOptions[newKey]);
}

console.log(finalOptions);

Ответы [ 5 ]

0 голосов
/ 05 сентября 2018

Если вы хотите сохранить порядок и знать ключ и значение, вы можете запустить этот код, чтобы получить массив объектов, в которых указаны ключ и значение, а порядок одинаков.

const initial = [
        {62: "01:30:00 - 01:45:00"},
        {61: "01:30:00 - 01:45:00"},
        {55: "03:15:00 - 04:15:00"}];

    const finalOptions = [];
    for (let i=0; i<initial.length; i++) {
        let option = initial[i];
        let key = Object.keys(option)[0]; // get first and only key from option
        finalOptions.push({key:key, value: option[key]});
    }
    
    console.log(finalOptions);
0 голосов
/ 05 сентября 2018

Если вы работаете с массивом объектов, вы можете использовать метод .reduce():

let data = [
  {62: "01:30:00 - 01:45:00"},
  {61: "01:30:00 - 01:45:00"},
  {55: "03:15:00 - 04:15:00"}
];

let result = data.reduce((a, c) => {
  let [[k, v]] = Object.entries(c);
  a[k] = v; return a;
}, {});

console.log(result);
0 голосов
/ 05 сентября 2018

Если у вас есть массив объектов, вы можете попробовать:

var ar = [{0: {62: "01:30:00 - 01:45:00"}, 1: {61: "01:30:00 - 01:45:00"},2: { 55: "03:15:00 - 04:15:00" }}]
 
var result;
for (el of ar) {
  for (obj in el) {
    for (text in el[obj]) {
      result = el[obj][text];result 
      console.log(result)
    }
  }
}

Но если у вас есть объект, вы можете попробовать это:

var obj = {
              0: { 62: "01:30:00 - 01:45:00" },
              1: { 61: "01:30:00 - 01:45:00" },
              2: { 55: "03:15:00 - 04:15:00" }
          };
var result;
for (key in obj) {
  for (el in obj[key]) {
    result = obj[key][el];
    console.log(result)
  }
}
0 голосов
/ 05 сентября 2018

у вас есть массив объектов. То, что вы пытаетесь сделать, это прочитать объекты из array1 (newOptions) и присвоить array2 (finalOptions). Результаты точно будут такими же.

enter image description here

Так Chrome Developer Console будет отображать массивы для понимания индекса массива и соответствующих значений

0 голосов
/ 05 сентября 2018

Попробуйте это:

var myObject = {
  0:{62: "01:30:00 - 01:45:00"},
  1:{61: "01:30:00 - 01:45:00"},
  2:{55: "03:15:00 - 04:15:00"}
};

var newObject = {};
for (s in myObject) {
  for (ss in myObject[s])
    newObject[ss] = myObject[s][ss];
}

console.log(newObject);

Это если вы хотите сохранить оригинальный порядок

var myObject = {
  0:{62: "01:30:00 - 01:45:00"},
  1:{61: "01:30:00 - 01:45:00"},
  2:{55: "03:15:00 - 04:15:00"}
};

var newObject = [];
for (s in myObject) {
  for (ss in myObject[s])
    newObject.push(myObject[s][ss]);
}

console.log(newObject);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...