如何在JavaScript计数器中当obj_list.length为1时将resultsCount设为0?
JavaScript计数器条件判断语法问题
我正在尝试遍历一组结果,给每个结果对象添加resultsCount属性,正常情况下这个属性值等于结果数组的长度。但现在需要实现:当数组长度为1时,把resultsCount设为0。已经确认基础的计数逻辑没问题,但不知道怎么写正确的条件判断语法,希望得到帮助。
原始代码如下:
return obj_list.map(x => { var obj = Object.assign({}, x); obj['resultsCount'] = obj_list.length; return obj; if obj_list.length = 1 then obj['resultsCount'] = 0;
解决方法
你的代码有两个问题:一是条件判断的语法错误,二是条件代码写在了return之后,永远不会执行。以下是修正后的两种写法:
写法一:用三元运算符(简洁版)
return obj_list.map(x => { var obj = Object.assign({}, x); // 严格判断数组长度是否为1,是则赋值0,否则赋值数组长度 obj['resultsCount'] = obj_list.length === 1 ? 0 : obj_list.length; return obj; });
写法二:用if-else语句(更直观)
return obj_list.map(x => { var obj = Object.assign({}, x); // 注意用===判断相等,而不是=(赋值) if (obj_list.length === 1) { obj['resultsCount'] = 0; } else { obj['resultsCount'] = obj_list.length; } return obj; });
关键注意点
- 判断两个值相等要用
===(严格相等,推荐)或==(松散相等),不能用=,=是用来给变量赋值的 - 所有需要执行的代码必须放在
return语句之前,因为return会直接结束当前函数,后面的代码根本不会运行
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

