JS:边缘情况问题 - 替换数组中的变量
JS: Edge case issue - replacing variable in array
编程测试返回边缘情况失败:
空数组 - 预期:[],而是得到:["]
短:西郊槌球俱乐部有两类会员,高级和公开。他们需要您帮助填写申请表,该表格将告诉潜在成员他们将被安置在哪个类别。
要成为老年人,会员必须年满 55 岁且残疾超过 7。在这个槌球俱乐部中,让分范围从 -2 到 +26;球员越好,让分越低。
输入
输入将包括一个列表列表,每个列表包含两个项目。每个列表都包含单个潜在成员的信息。信息由表示该人的年龄的整数和表示该人的残疾的整数组成。
示例输入:
[[18, 20],[45, 2],[61, 12],[37, 6],[21, 21],[78, 9]]
输出
输出将包含一个字符串值列表(在 Haskell 中:开放或高级),说明是将相应成员置于高级类别还是开放类别中。
示例输出["
开放"、"开放"、"高级"、"开放"、"开放"、"高级"]我的职能:
function openOrSenior(data){
var c = [];
var i;
for (i = 0; i < data.length; ++i) {
var person = data[i];
var age = person[0];
var handicap = person[1];
// senior
if ((age >= 55) && (handicap > 7)) {
person = [];
person.push("Senior");
} else {
person = [];
person.push("Open");
}
c.push(person);
}
return c.join().split(',');
}
有什么指示吗?
原因是
-
您正在将数组推送到
c
上,而不仅仅是字符串 -
然后你正在执行
c.join().split(',')
,它将首先将这些数组组合成一个字符串(以一种相当微妙的方式),然后在分隔符上拆分该字符串(','
)。split
的结果总是至少有一个条目长 - 如果数组没有出现分隔符(如果c
开始时为空,则不会出现),你会得到一个包含单个字符串的数组(如果c
开始时为空,则为空白)。
例如,[].toString().split(",")
是[""]
,而不是[]
。
解决方案是将字符串(而不是数组)推送到c
中,然后直接返回(无.join().split(',')
)。
关于我上面的"相当微妙的方式"评论。如果你有一个数组数组,如下所示:
var a = [ ["a", "b"], ["c", "d"], ["e", "f"] ];
a.join()
将遍历a
中的每个条目并调用toString
。由于a
中的条目是数组,因此对它们调用toString
与调用join
相同(这只是Array#toString
的定义方式),所以你最终会做['a', 'b'].toString()
,这给你"a,b"
,然后与第二个条目("c,d"
)相同,然后再次与第三个条目("e,f"
),然后取所有这些并从中制作一个字符串, 中间有逗号 ( "a,b,c,d,e,f"
)。
尝试以下操作:
function openOrSenior(data){
function determineMembership(member){
return (member[0] >= 55 && member[1] > 7) ? 'Senior' : 'Open';
}
return data.map(determineMembership);
}
- Javascript:OnChange事件,将数组变量传递给另一个函数
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 是socket.io异步的-我需要锁定全局数组/变量吗
- 在Javascript代码中显示PHP数组变量
- 如何在不赋值数组变量的情况下读取数组数据
- 局部数组变量不是数组
- Javascript数组变量的行为不相同
- 正在尝试将Javascript数组变量分配给HTML输入值属性
- JQuery的PHP查询数组变量
- Javascript::如何将关联数组的键获取到数组变量
- 在jsp页面中获取javascript数组变量
- 输出数组变量javascript
- 如何将数组变量从Python插入到Javascript
- 将数组变量传递给函数的下一部分
- 使用 AJAX 调用将数组变量从 JS 传递到 PHP
- d3 本地存储比较数组 .filter 咖啡脚本;数组变量不起作用
- 我们可以更新一个javascript数组变量,而不使用ajax重新加载页面吗?
- 无法使用 JavaScript 将值读入全局数组变量
- 作为“名称”的Javascript数组变量不起作用
- 如何将数组变量合并为对象数组变量