I have an array containing 7 objects named is NewClass.
When I make some changes to the objects, the object has lost its original NewClass name.
Like that:
In arrray[6] lost NewClass name.
So is there any way I can keep the NewClass name for that object?
Here is my function to handle this array:
useEffect(() => { console.log(layers); if (selectedLayerIndex && layers.length > 0) { console.log( 'x', layers.map((x) => { if (x.feature.properties.editLayerId === selectedLayerIndex) { console.log(x); return (x = { ...x, options: { ...x.options, color: 'cyan', fillColor: 'cyan' }, }); } return x; }) ); }
}, [selectedLayerIndex]);
Thank you so much!
Advertisement
Answer
by using the syntax x = {...x, option: {/* some changes to the class */}
here, you change the class to a object, which cause a lost of your class name.
If you want to keep it as a class, please use instance.attribute instead, see the following example
class Demo { constructor(color){ this.color = color; } } var array = [new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red'),new Demo('red')]; console.log('original array', array); console.log(''); array[6] = {...array[6], color: 'blue'}; console.log(array); // array[6] have been change to a object console.log(''); array[5].color = 'green'; console.log(array); // array[5] is still a class console.log('');