У меня есть массив объектов следующего формата:
const options = [
{ key: 1, text: "Name", value: "name", icon: "sort" },
{ key: 2, text: "Time", value: "time", icon: "sort" },
{ key: 3, text: "Type", value: "type", icon: "sort" }
];
Теперь, в зависимости от переданного ввода, какой формат {fieldName, order} я должен изменить массив. Обычно order будет принимать два значения «as c» или «des c», а fieldName будет принимать любое из значений свойства value
массива параметров.
Например: {fieldName: "name", order: "as c"} или {fieldName: "type", order: "des c"}
Основываясь на этом порядке, я изменил поле icon
исходного массива для этого поля.
Если order
равно как c, то измените свойство icon
для этого поля на sort up
. Если его порядок des c, затем измените свойство icon
для этого поля на sort down
Пример
1) sortBy: { fielName: "name", order:"asc"}
//Output
[
{ key: 1, text: "Name", value: "name", icon: "sort up" },
{ key: 2, text: "Time", value: "time", icon: "sort" },
{ key: 3, text: "Type", value: "type", icon: "sort" }
];
2) sortBy: { fielName: "type", order:"desc"}
//Output
[
{ key: 1, text: "Name", value: "name", icon: "sort" },
{ key: 2, text: "Time", value: "time", icon: "sort" },
{ key: 3, text: "Type", value: "type", icon: "sort down"}
];
Он должен обновлять только icon
поля, переданного ему, а остальные поля icon
должны быть установлены в "sort"
Это то, что я пробовал
const options = [
{ key: 1, text: "Name", value: "name", icon: "sort" },
{ key: 2, text: "Time", value: "time", icon: "sort" },
{ key: 3, text: "Type", value: "type", icon: "sort" }
];
function updateArray(obj)
{
const newArr = options.map(item => {
if(item.name === obj.fieldName) {
return {...item, icon: obj.order === "desc" ? "sort-desc" :"sort-asc" };
}
return {...item};
});
return newArr;
}