#javascript #arrays #object #filter #defineproperty
#javascript #массивы #объект #Фильтр #defineproperty
Вопрос:
Я пытался найти способ сделать это, но ничего не нашел.
Я хочу отфильтровывать элементы массива при доступе к массиву. Например: отфильтровывать только отрицательные значения
let arr = [-1, -2, -4, -5, 8, 9, 10, -7, 5, 7, 8, 4, -12];
let o = {
arr: arr
};
Object.defineProperty(o, 'arr', {
get: () => { /* filter only negative values */ }
});
// should print only positive values
console.log(o.arr)
Ответ №1:
Вы можете использовать filter
let arr = [-1, -2, -4, -5, 8, 9, 10, -7, 5, 7, 8, 4, -12];
let o = {
array: arr
};
Object.defineProperty(o, 'arr', {
get: () => {
return o.array.filter(a => a >= 0)
}
});
console.log(o.arr)
Комментарии:
1. А что, если у меня нет указателя на массив?
2. Я не уверен, как у вас не могло быть указателя на него. Пожалуйста, объясните подробнее
Ответ №2:
вы можете использовать Array.prototype.filter и это (контекст)
let arr = [-1, -2, -4, -5, 8, 9, 10, -7, 5, 7, 8, 4, -12];
let o = {
arr,
};
Object.defineProperty(o, 'negative', {
// return array values where item < 0
get: function () {return this.arr.filter(item => item < 0)}
});
// should print only positive values
console.log(o.negative)