#javascript
#javascript
Вопрос:
У меня есть объект с именем ItemData, который состоит из других свойств. Я хотел бы извлечь из него только пронумерованные элементы. ниже приведен текст ItemData . Я пытался использовать map, но он выдает ошибку, в которой говорится, что ItemData является объектом. Я могу использовать item[0] и item[1], но в объекте будет много массивов. Существует ли структурный способ извлечения элементов 0 и 1.
ItemData
{
0: { "daysIn": "2", "daysOut": "3", "category": "Day Shift" },
1: { "daysIn": "5", "daysOut": "6", "category": "Day Shift" },
type: "Fixed Multiple",
Status: "Active"
}
Комментарии:
1. Здесь нет «массива».
'0'
и'1'
являются просто ключами объекта, а не индексами массива. Вы могли бы искать все ключи, которые являются числами, и создавать массив на основе этого.
Ответ №1:
У вас нет массива, но вы можете перебирать ключи, которые являются числами, и создавать массив из этих значений.
const ItemData = {
0: {
"daysIn": "2",
"daysOut": "3",
"category": "Day Shift"
},
1: {
"daysIn": "5",
"daysOut": "6",
"category": "Day Shift"
},
type: "Fixed Multiple",
Status: "Active"
}
function getArray(obj) {
const result = [];
const keys = Object.keys(obj);
for (const k of keys) {
if (Number(k) == k) {
result[k] = obj[k];
}
}
return resu<
}
const arr = getArray(ItemData);
console.log(arr);
Ответ №2:
Попробуйте это….
var obj = {
0: { "daysIn": "2", "daysOut": "3", "category": "Day Shift" },
1: { "daysIn": "5", "daysOut": "6", "category": "Day Shift" },
type: "Fixed Multiple",
Status: "Active"
}
var result = Object.keys(obj).map((key) => [key, obj[key]]);
console.log(result);
Ответ №3:
let obj={0:{daysIn:"2",daysOut:"3",category:"Day Shift"},1:{daysIn:"5",daysOut:"6",category:"Day Shift"},type:"Fixed Multiple",Status:"Active"};
let result = Object.entries(obj)
.filter(e => Number.isInteger( e[0]))
.map(([_,v]) => v)
console.log(result)
Ответ №4:
вы можете превратить его в массив и перебирать его, чтобы вернуть то, что вы хотите. Я бы использовал reduce, поскольку вы можете настроить, что и как вы возвращаете данные.
Object.keys(ItemData).reduce((accumlated, current) => {
if (Number(current)) {
accumlated[current] = ItemData[current];
}
return accumlated
}, {});
это вернет объект, состоящий только из свойств, которые пронумерованы.
если вы хотите, чтобы они возвращались в массиве, вы можете просто изменить начальное значение для уменьшения
Object.keys(ItemData).reduce((accumlated, current) => {
if (Number(current)) {
accumlated.push(ItemData[current]);
}
return accumlated
}, []);