如何检查数组元素末尾字符是否符合条件 修复删除尾缀s的代码问题
代码无法运行的原因
- 语法结构不完整:你提供的代码中
for循环没有对应的闭合右大括号},属于基础语法错误,JS引擎解析代码时会直接抛出异常,无法执行。 - 变量未声明:代码中赋值的
item变量没有使用let/const关键字声明,严格模式下会直接触发引用错误,非严格模式下会意外创建全局变量,引发不可预期的逻辑问题。 - 依赖变量未定义:如果你没有提前给
arrays变量赋值为待处理的目标数组,运行时会报arrays is not defined的错误。 - 边界情况处理缺失:如果数组中存在空字符串、非字符串类型的元素,调用
substring、slice方法时会触发类型错误,或者逻辑不符合预期。
修复后的可运行代码
// 先定义待处理的目标数组 const arrays = ["apples", "banana", "oranges", "pear"] let myList = [] for (let i = 0; i < arrays.length; i++) { if (arrays[i].substring(arrays[i].length - 1) == 's') { let item = arrays[i].slice(0, -1); myList.push(item); } else { myList.push(arrays[i]); } }
可选优化方案
可以使用JS内置的endsWith方法简化结尾判断逻辑,也可以用map方法替代for循环让代码更简洁,同时兼容非字符串类型的元素:
const arrays = ["apples", "banana", "oranges", "pear", 123, null] const myList = arrays.map(item => { if (typeof item === 'string' && item.endsWith('s')) { return item.slice(0, -1) } return item })
内容的提问来源于stack exchange,提问作者beginner12345
相关产品推荐
相关产品推荐

