'I have some instances of a class and I pushed them into an array. Can I loop through the array and update the price of all the array objects?
I have a parent constructor like this:
let list = [];
class Pictures {
constructor(price, title) {
this.price = price;
this.title = title;
list.push(this)
}
updatePrice(price_increase) {
this.price = this.price * price_increase / 100 + this.price
return this.price
}
}
I also have two child classes that inherit from the Pictures(Parent) class
class Photograph extends Pictures {
constructor(photographer, camera, aperture, contrast, price, title) {
super(price, title);
this.price = price;
this.title = this.title;
this.photographer = photographer;
this.camera = camera;
this.aperture = aperture;
this.contrast = contrast;
}
alterContrast(new_contrast) {
this.contrast = new_contrast;
}
toString() {
return `Photographer: ${this.photographer}, Camera: ${this.camera},
Aperture: ${this.aperture}, Contrast: ${this.contrast}`;
}
}
And:
class Painting extends Pictures {
constructor(artist, type, owner, title, price) {
super(price, title);
this.price = price;
this.title = title;
this.artist = artist;
this.type = type;
this.owner = owner;
}
printProvenance() {
}
toString() {
return `Artist: ${this.artist}, Type: ${this.type}, Owner: ${this.owner}`;
}
}
And these are the instances of the classes
let photo_one = new Photograph('Kyle', 'Nikon', 32, 21, 30, 'Sunset')
let photo_two = new Photograph("Maya", "Sony XPR", 100, 23, 100.00, "Festival of Color");
I pushed all of the instances to the "list" array in the parent constructor. Is it possible to loop through the array and use the updatePrice
method in the Pictures
class to update the price value of all objects?
Solution 1:[1]
Yes, you can, just use .map , .forEach or for loop
list.map((item) => {
item.updatePrice(1000)
})
But I can recommend to store 'list' inside class.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Denis |