JavaScript数组操作报错排查及make_album函数实现需求
一、实现音乐专辑对象生成函数
代码实现
function make_album(artistName, albumTitle, trackCount) { const album = { artist: artistName, title: albumTitle }; // 传入曲目数时添加对应属性 if (trackCount !== undefined) { album.tracks = trackCount; } return album; } // 创建三个专辑对象并验证 const album1 = make_album('周杰伦', '范特西'); const album2 = make_album('泰勒·斯威夫特', '1989'); const album3 = make_album('陈奕迅', 'U87', 11); // 带曲目数的调用 console.log(album1); console.log(album2); console.log(album3);
说明
- 函数接收必填的艺术家名称和专辑标题,返回包含这两项信息的对象。
- 可选参数
trackCount用于传入曲目数,仅当参数存在时,才会给专辑对象添加tracks属性。 - 调用示例覆盖了无曲目数和带曲目数的场景,打印结果可直接验证信息存储正确性。
二、解决数组操作报错:
Uncaught TypeError: great_magicians.append is not a function 问题根源
JavaScript数组没有append()方法,该方法属于DOM元素(如Node.append())。数组添加元素需使用数组专属方法。
错误示例(假设)
const great_magicians = ['David Copperfield', 'Harry Houdini']; great_magicians.append('Penn & Teller'); // 数组无此方法,触发报错
修正方案
方案1:用push()修改原数组
const great_magicians = ['David Copperfield', 'Harry Houdini']; great_magicians.push('Penn & Teller'); console.log(great_magicians); // 输出: ["David Copperfield", "Harry Houdini", "Penn & Teller"]
方案2:用扩展运算符生成新数组(不修改原数组)
const great_magicians = ['David Copperfield', 'Harry Houdini']; const newMagicians = [...great_magicians, 'Penn & Teller']; console.log(newMagicians);
方案3:用concat()生成新数组
const great_magicians = ['David Copperfield', 'Harry Houdini']; const newMagicians = great_magicians.concat('Penn & Teller'); console.log(newMagicians);
总结
数组添加元素时,需使用JavaScript数组提供的方法,避免混淆DOM元素的API。根据需求选择修改原数组的push(),或生成新数组的扩展运算符/concat()。
内容的提问来源于stack exchange,提问作者Psyco
相关产品推荐
相关产品推荐

