Обращение к объекту в массиве
b и a это объекты и мне нужно в название их свойств вставлять название свойства другого объекта, вот функция:
sortBy(index) {
this.columns.forEach((col) => {
this.data.sort((a, b) => {
return b[col[index].field].localeCompare(a[col[index].field]);
});
});
},
this.data
data: [
{
id: 1,
fullname: "Kenyon Estrada",
email: "[email protected]",
},
{
id: 1312,
fullname: "Paris Stanley",
email: "[email protected]",
},
{
id: 14214,
fullname: "Allen Giles",
email: "[email protected]",
},
],
Массив объектов выглядит так:
columns: [
{
field: "id",
label: "Id",
},
{
field: "fullname",
label: "Full Name",
},
{
field: "email",
label: "Email",
},
],
Нужно чтобы свойство field подставлялось в объекты b и a, сейчас выдает ошибку: Cannot read property 'field' of undefined Что я делаю неправильно?
Ответы (1 шт):
Автор решения: Stepan Kasyanenko
→ Ссылка
Возможно, вам нужно что-то вроде этого. Кстати, localeCompare не работает для чисел.
const data = [{
id: 1,
fullname: "Kenyon Estrada",
email: "[email protected]",
},
{
id: 1312,
fullname: "Paris Stanley",
email: "[email protected]",
},
{
id: 14214,
fullname: "Allen Giles",
email: "[email protected]",
},
];
const columns = [{
field: "id",
label: "Id",
},
{
field: "fullname",
label: "Full Name",
},
{
field: "email",
label: "Email",
},
];
function sortBy(index) {
return data.sort((a, b) => {
return b[columns[index].field].localeCompare(a[columns[index].field]);
});
};
console.log(sortBy(1));
console.log(sortBy(2));