Получить значение даты из свойства объекта — javascript

#javascript #arrays

#javascript #массивы

Вопрос:

Как я могу получить только дату без строкового значения из приведенного ниже объекта?

 0: {2020-09-02: "string_1", 2020-09-03: "string_2"}
1: {2020-09-01: "string_1", 2020-09-05: "string_2"}
  

Моя цель — получить только дату и сгруппировать их в один массив.

Ожидаемый результат: [2020-09-02, 2020-09-03, 2020-09-01, 2020-09-05]

Что я пробовал до сих пор, так это использовать Object.getOwnPropertyNames:

console.log('property name: ', Object.getOwnPropertyNames(getDateProperties)) // return ["0","1"]

Возможно ли этого чего-то достичь?

Комментарии:

1. Вы пробовали использовать Object.keys (getDateProperties)

2. да, я пробовал это раньше, но результат похож, который возвращает, [«0», «1»] @ Asutosh

3. вы уверены, что ваши данные являются объектом, а не массивом объектов?

4. Вам необходимо получить доступ к внутренним ключам объекта

5. @1aliff Я опубликовал ответ, используя Object.keys. Пожалуйста, взгляните.

Ответ №1:

Используйте ключи reduce и Object для получения дат из объекта

 const list = [{
    "2020-09-02": "string_1",
    "2020-09-03": "string_2"
  },
  {
    "2020-09-01": "string_1",
    "2020-09-05": "string_2"
  }
]
const result = list.reduce((acc, x) => {
  const keys = Object.keys(x)
  acc = [...acc, ...keys]
  return acc;
}, [])
console.log(result)  

Ответ №2:

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

 let obj = {
0: {"2020-09-02": "string_1", "2020-09-03": "string_2"},
1: {"2020-09-01": "string_1", "2020-09-05": "string_2"}
}
let arr = [];
for(var key in obj){
    for(var subkey in obj[key]){
        arr.push(subkey);
    }
}
console.log('property name: ', arr)  

Ответ №3:

Вы можете попробовать следующим образом:

 let obj = {
  0: {
    "2020-09-02": "string_1",
    "2020-09-03": "string_2"
  },
  1: {
    "2020-09-01": "string_1",
    "2020-09-05": "string_2"
  }
}
const resultArray = [];
Object.keys(obj).forEach((k) => Object.keys(obj[k]).forEach((dateArg) => resultArray.push(dateArg)));
console.log(resultArray);  

Ответ №4:

Быстрый однострочный

 let obj = {
    0: {"2020-09-02": "string_1", "2020-09-03": "string_2"},
    1: {"2020-09-01": "string_1", "2020-09-05": "string_2"}
}

let output = Object.keys(obj).reduce((acc, key) => [...acc, ...Object.keys(obj[key])], [])

console.log(output)
  

Ответ №5:

Использование flatMap и Object.keys должно упростить

 const list = [
  {
    "2020-09-02": "string_1",
    "2020-09-03": "string_2",
  },
  {
    "2020-09-01": "string_1",
    "2020-09-05": "string_2",
  },
];

const res = list.flatMap(Object.keys);

console.log(res);  

В качестве альтернативы, если входные данные являются object .

 let obj = {
  0: {
    "2020-09-02": "string_1",
    "2020-09-03": "string_2"
  },
  1: {
    "2020-09-01": "string_1",
    "2020-09-05": "string_2"
  }
}

const res = Object.values(obj).flatMap(Object.keys);

console.log(res)