Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数组的总长度中减去并获得一个干净的数字[Javascript]_Javascript_Arrays_Max - Fatal编程技术网

从数组的总长度中减去并获得一个干净的数字[Javascript]

从数组的总长度中减去并获得一个干净的数字[Javascript],javascript,arrays,max,Javascript,Arrays,Max,我这里有这个代码: function likes(names) { if (names.length == 0) { return 'no one likes this'; } else if (names.length >= 4) { return names[0]+ ', ' + names[1] + ' and' + names.length - 2 + 'others like this'; } else if (names.length <4 &am

我这里有这个代码:

function likes(names) {
  if (names.length == 0) {
    return 'no one likes this';
}  else if (names.length >= 4) {
    return names[0]+ ', ' + names[1] + ' and' + names.length - 2 + 'others like this';
}  else if (names.length <4 && names.length >0){
return names[0] + ', ' + names[1] +' and ' + names[2] +' like this'
}}
函数类(名称){
如果(names.length==0){
返回“没有人喜欢这个”;
}else if(names.length>=4){
返回名称[0]+'、'+names[1]+'和'+names.length-2+'其他类似名称';
}else if(names.length 0){
像这样返回名称[0]+'、“+名称[1]+'和“+名称[2]+'”
}}

我的主要问题在第五行。我需要从数组的长度中减去2,并将其转换为字符串。不幸的是,我不知道如何做到这一点,我的想法显然是错误的。提前感谢。

您必须将数字子表达式括在括号中,以防止它成为较大字符串连接过程的一部分:

return names[0]+ ', ' + names[1] + ' and ' + (names.length - 2) + ' others like this';

这样,数值减法子表达式将被单独计算,其结果将被连接到字符串中。

必须将数值子表达式括在括号中,以防止其成为较大字符串连接过程的一部分:

return names[0]+ ', ' + names[1] + ' and ' + (names.length - 2) + ' others like this';
这样,数值减法子表达式将单独计算,其结果将连接到字符串中。

或者,我认为模板字符串更干净:

return `${names[0]}, ${names[1]} and ${names.length - 2} others like this`;
或者,我认为模板字符串更干净:

return `${names[0]}, ${names[1]} and ${names.length - 2} others like this`;

它们可能更干净(虽然对于简单的情况,我不是100%相信),但据我所知,它们在任何IE版本(包括Edge)中都不受支持。实际上,对于模板文本来说,它看起来相当不错。然而,IE11完全缺乏支持。它们可能更干净(虽然对于简单的情况,我不是100%相信),但据我所知,它们在任何IE版本(包括Edge)中都不受支持。实际上,对于模板文本来说,它看起来相当不错。然而,IE11完全缺乏支持。此外,在
else中,如果(names.length 0)
和&names.length>0
是冗余的。如果(names.length==0),您在
中检查了它。
重新排列条件也是个好主意。1)
==0
,2)
<4
,3)
否则
,这意味着
=4
@AlexKudryashev确信这是真的。我只是针对眼前的问题。我针对提问者;)谢谢Alex,虽然回答主要问题会更好。此外,在
中,如果(names.length 0)
和&names.length>0
是多余的。如果(names.length==0),您在
中检查了它。
重新排列条件也是个好主意。1)
==0
,2)
<4
,3)
否则
,这意味着
=4
@AlexKudryashev确信这是真的。我只是针对眼前的问题。我针对提问者;)谢谢Alex,虽然回答主要问题会更好。