Change:
I know we have had this discussion before but I still think the requirements in the list can be improved. I saw someone link an article and the way it is put in the article by Jessica is more clear. My main gripe with what we have now is the last requirement on the list. There is no reason why it can't be more specific by adding a fourth point to the list (the last point becomes two points). Requirements we have now: If is and isn't an empty string, you need to update the album's array. First, if the album does not have a property, assign it an empty array. Then add the as the last item in the album's array. Requirements from the article: If is but the album doesn't have a property, create an empty array and add to it. If is and isn't an empty string, add to the end of the album's existing array. Better description of the requirements. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22]
Wording consistency If is and isn't an empty string, but the album doesn't have a property, create an empty array and add to it. If prop is and isn't an empty string, add to the end of the album's existing array. I still hate that we don't distinguish between a string literal and a variable name per our style guide. That makes these instructions more confusing. I think this problem is in the wrong spot and making the learners regurgitate pesudocode they don't really understand and convert it into JS isn't really helping them, but hey, this will be legacy curriculum soon, so that fixes the problem.
I agree, if a value is a string it should be denoted as such. I guess adding "the string" before/after each reference is an option. This challenge has multiple issues the main being it isn't a good function to begin with. It has far too many responsibilities and it isn't teaching good practices. Having the function delete data if the consumer of the API forgets to pass in a value or does it by mistake in dynamic code is a very poor API decision. I would split it into three functions, add, update, and delete. Have it teach proper CRUD functions. I think you mean soon No, but in all seriousness, I haven't followed the update progress so I don't know how far off it is. However, waiting for something to be completely replaced with something new is a sure way of accumulating "technical debt".
There's a thread on the forum about the timing of the rollout
I just saw it. But we should probably not abandon the challenges if they are going to stay, even if they are legacy.
Abandon, no. But I don't think we need to burn much more effort on this challenge. Not saying I'm opposed to the wording (with my proposed tweak) above - just that we really shouldn't worry too much about fiddling more.
If someone wants to follow the article's wording to improve this lesson, then they are welcome to go for it. Personally, I am in the same boat as We have changed and re-changed this lesson so many times, and, in general, we put no effort into legacy curricula. If there is a bug preventing a lesson from passing, then that should be fixed (or the lesson removed), but we should not spend time re-wording legacy content.
Now that the new JS curriculum is live, I think it would be best to stop putting effort into rewording this challenge.
It is hardly much effort. I see no reason why if someone wants to update this they should not be allowed to do so. Just put a help wanted label on it and someone will, or won't do it. We can leave it at that.

Discussion:
-   Your function must always return the entire `records` object. -   If `value` is an empty string, delete the given `prop` property from the album. -   If `prop` isn't `tracks` and `value` isn't an empty string, assign the `value` to that album's `prop`. <del> -   If `prop` is `tracks` and `value` isn't an empty string, you need to update the album's `tracks` array. First, if the album does not have a `tracks` property, assign it an empty array. Then add the `value` as the last item in the album's `tracks` array. </del> <ins> -   If `prop` is `tracks` and `value` isn't an empty string, but the album doesn't have a `tracks` property, create an empty array and add `value` to it. -   If prop is `tracks` and `value` isn't an empty string, add `value` to the end of the album's existing `tracks` array. </ins> **Note:** A copy of the `recordCollection` object is used for the tests. You should not directly modify the `recordCollection` object.