【发布时间】:2016-03-12 09:22:57
【问题描述】:
假设我创建了一个翻转数组元素的函数。例如,该函数接受 [1,2,3,4] 并将其翻转为 [4,3,2,1]。我的功能有能力做到这一点。但是,我想做一些似乎不起作用的事情。如果我这样调用函数:flip("hello"),我希望它把 "hello" 更改为这样的数组:[h,e,l,l,o],将元素翻转成这样:o,l,l,e,h 然后将元素连接在一起以使其成为@ 987654325@。到目前为止,这是我能够做到的:
function reverse (A) {
if(typeof(A) == 'string') { A.toString().split(" "); }
var i1 = 0;
var i2 = A.length - 1;
function swap(A, i1, i2) {
var temp = A[i1];
A[i1] = A[i2];
A[i2] = temp;
return A;
}
var index1 = 0;
var index2 = A.length - 1;
var temp = A[index1];
for(let i = index1; i < index2; i++) {
swap(A, i, index2); index2--;
}
console.log(A);
}
这根本不起作用。我认为这是因为我不是在处理被调用的内容,而是在处理参数本身。我也试过:
if(typeof(reverse(A)) == 'string') {A.toString().split(" "); }
但是,这给了我一个结果:RangeError: Maximum call stack size exceeded
我一直在寻找一个小时没有成功。有什么帮助吗?
【问题讨论】:
-
"Hello".split("").reverse().join("") -
有没有办法将“hello”分配给一个函数?除了输入
"Hello".split("").reverse().join(""),我不能只输入“Hello”.reverse() 吗?
标签: javascript arrays string function