JavaScript数组非重复添加元素时push返回值异常问题咨询
问题根因
你代码返回数字的核心原因是对push()方法的返回值理解有误:Array.push() 执行后会直接修改原数组,但它的返回值是添加元素后数组的新长度,不是修改后的数组本身。
比如你调用add([1,2], 3)时,push执行完数组确实变成了[1,2,3],但push的返回值是数字3,你直接return这个返回值,自然拿不到预期的数组结果。
另外你的代码还存在一处语法疏漏:if-else代码块缺少闭合的右花括号},运行时也可能触发异常。
修正后的实现
只需要调整逻辑:执行push操作修改数组后,不要返回push的结果,而是返回修改后的数组本身即可。
function add(Sarray, nosarray) { // 仅当元素不存在时执行添加 if (Sarray.indexOf(nosarray) === -1) { Sarray.push(nosarray); } // 统一返回最终的数组 return Sarray; }
代码验证:
- 执行
add([1, 2], 3):3不在原数组中,push添加后返回[1, 2, 3],符合要求 - 执行
add([1, 2], 2):2已存在,不执行添加,直接返回原数组[1, 2],符合要求
内容的提问来源于stack exchange,提问作者Rahmon Saidov
相关产品推荐
相关产品推荐

