JavaScript算法之记录集合

1、问题描述

你将创建一个帮助维护音乐专辑集的函数。 这个集合是一个包含多个相册的对象,这些相册也是对象。 每张专辑在集合中以唯一的 id 作为属性名来表示。 在每个专辑对象中,有各种描述专辑信息的属性。 并非所有专辑都有完整的信息。

(1)updateRecords 函数有 4 个参数,即以下参数:

records - 一个包含多个专辑的对象
id - 一个数字,代表 records 对象中特定的专辑
prop - 一个字符串,代表相册属性名称
value - 一个字符串,包含用来更新相册属性的信息

(2)使用下面的规则完成函数来修改传递给函数的对象。

你的函数必须始终返回整个 records 对象。
如果 value 是空字符串,从专辑里删除指定的 prop。
如果 prop 不是 tracks,并且 value 不是一个空字符串,将 value 赋给那个专辑的 prop。
如果 prop 是 tracks 并且 value 不是一个空字符串,你需要更新专辑的 tracks 数组。 首先,如果专辑没有 tracks 属性,赋予它一个空数组。 然后添加 value 作为专辑的 tracks 数组的最后一个项目。
注意: 将 recordCollection 对象的副本用于测试。 你不应该直接修改 recordCollection 对象。

2、代码修改

(1)需要修改的代码

image.png

(2)修改要求

  • 执行 updateRecords(recordCollection, 5439, "artist", "ABBA") 后,artist 的值应该是字符串 ABBA。
  • 等待中:执行 updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me") 后,tracks 的最后一个和唯一一个元素应该为字符串 Take a Chance on Me。
  • 等待中:执行 updateRecords(recordCollection, 2548, "artist", "") 后,artist 不应被设置为任何值。
  • 等待中:执行 updateRecords(recordCollection, 1245, "tracks", "Addicted to Love") 后,tracks 的最后一个元素应该为字符串 Addicted to Love。
  • 等待中:执行 updateRecords(recordCollection, 2468, "tracks", "Free") 后,tracks 的第一个元素应该为字符串 1999。
  • 等待中:执行 updateRecords(recordCollection, 2548, "tracks", "") 后,tracks 不应被设置为任何值。
  • 等待中:执行 updateRecords(recordCollection, 1245, "albumTitle", "Riptide") 后,albumTitle 的值应该是字符串 Riptide。

    3、修改完成的代码

    image.png


曦夏
7 声望3 粉丝