#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)