Использование Array.prototype.filter
кажется более подходящим.
variantDefault = (colorId, sizeId) => {
if (this.props.index.isBetween(0, arguments.length, 1)) return [];
var compareTo = arguments[this.props.index];
return this.props.values.filter(item => item.id === compareTo);
};
Если вы хотите вернуть только последний найденный элемент (что и происходит в вашем примере), добавьте вызов Array.prototype.pop
в отфильтрованный массив.
Вы можете добавить функцию isBetween
, выполнив:
if (typeof Number.prototype.isBetween !== "function") {
Number.prototype.isBetween = function(start, end, inclusive) {
if (typeof start !== "number" || isNaN(start)) throw Error("Start is not a number");
if (typeof end !== "number" || isNaN(end)) throw Error("End is not a number");
return inclusive ? start <= this && this <= end : start < this && this < end;
};
}