Здравствуйте, подскажите пожалуйста:
Задача:
1.Есть ассоциативный массив с такими объектами: (речь идет о сотнях таких объектов внутри)
arr: [ { name: ' SB ', id: 'O5', value: 10,}, { name: ' SB ', id 'O5', value: 11,} ]
2. Я во 2Vue.js принимаю значение с селекта:
options: [{
value: 'O1',
label: 'Первый'
},{
value: 'O7',
label: 'Второй'
}]
3. Необходимо каждый объект массива проверить на соответствие выбранному значению селекта.
4. Те объекты что попадают под это условие вывести в новый массив
5. Найти объект в новом массиве с минимальным value
Я тапорно сделал так:
RSUM: function (){
var response = this.arr;
var va = this.value;
var defaul = this.defaultPrograms;
var rates = response.filter(function(elem) {
return elem.id == va;
});
if (rates.length == 0) {
rates = defaul;
console.log(rates);
};
console.log(rates.length);
var minEl = rates[0].value
var br = rates.filter(function(elem){
return elem.value <= minEl;
});
console.log(br);
this.ValueMin = br[0].value;
console.log(this.ValueMin);
}
Но работает через раз, и чую я что работает по случайности.
ВОПРОС РАЗ: Как правильно и лучше реализовать данный функционал? (при условии что данных будет более 100)
ВОПРОС ДВА: Если минимальные значения у нескольких элементов, как добавить второй параметр для ранжирования?
ВОПРОС ТРИ: Как делать такую же фильтрацию по нескольким параметрам? Например добавлять в новый массив когда совпадает: id/(checkbox1)/(checkbox) и тд...
Заранее спасибо!