我有一个奇怪的问题。我必须实现一个函数count,它反转我已经创建的getNumberSequence函数。 (即:count(getNumberSequence(x))== x,对于所有整数x> 0)。我有我的功能,我也有解决问题的逻辑,但我不知道该怎么做。在我的情况下,我想调用前一个有序数字串,拆分它们并调用最后一个数字。问题是,我怎样才能调用另一个方法的返回?这是我的代码:
function getNumberSequence(number) {
var result = "";
if (number <= 0) {
return result;
} else {
var first = true;
for (i = 1; i <= number; i++) {
if (first) {
first = false;
} else {
result += ", ";
}
result += i;
}
}
return result
}
基本上我需要在这种情况下使用变量结果在另一个函数中调用它。
function count(s) {
var d = s. split(', ');
return d[-1];
}
我知道第二个代码错了,但我不知道如何修复它。我已经实施了一个测试:
test( "Count", function() {
for (i = 1; i<10000; i = i + 10) {
equal(count(getNumberSequence(i)) , i, "count(getNumberSequence(" +i + ")) should return " + i);
}
我知道答案可能很愚蠢但我昨天第一次开始使用javascript。希望您能够帮助我。谢谢大家
答案 0 :(得分:2)
如果我理解正确,您希望将一个数字(例如10
)传递给第一个函数,并返回一串数字,最多为10
,然后返回count
读取该字符串并再次返回10
(作为整数)?这样就可以了。它接受字符串,将其拆分,并弹出最后一个数字,然后将其转换为整数,然后返回它。
function count(seq) {
return parseInt(seq.split(', ').pop(), 10);
}
我可以像这样重写它:
function count(seq) {
// create an array
var arr = seq.split(', ');
// grab the last element (a string)
var lastElement = arr.pop();
// convert the string to an integer
var convertedInteger = parseInt(lastElement, 10);
// return the integer
return convertedInteger;
}
如果你想使用反向并抓住第一个元素,请执行以下操作:
function count(seq) {
return parseInt(seq.split(', ').reverse()[0], 10);
}
或者使用shift
做同样的事情:
function count(seq) {
return parseInt(seq.split(', ').reverse().shift(), 10);
}