【问题标题】:How To Change What You've Called In A Function To An Array如何将函数中调用的内容更改为数组
【发布时间】: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


【解决方案1】:

替换

A.toString().split(" ");

A = A.split(""); // empty string for splitting, splits every character

因为你需要一个赋值,而A 已经是一个字符串,你不需要toString()

稍后你必须返回加入的数组:

return A.join('');

使用的方法:

包含一些小改动的完整工作代码:

function reverse(a) {
    function swap(b, i1, i2) {
        var temp = b[i1];
        b[i1] = b[i2];
        b[i2] = temp;
    }

    var index1 = 0,
        index2 = a.length - 1,
        isString = typeof a === 'string';

    if (isString) {
        a = a.split("");
    }

    for (index1 = 0; index1 < index2; index1++) {
        swap(a, index1, index2);
        index2--;
    }

    return isString ? a.join('') : a;
}

document.write('<pre>' + JSON.stringify(reverse([100, 101, 102]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(reverse('hello'), 0, 4) + '</pre>');

【讨论】:

    【解决方案2】:
    <pre><code>
    <script>
    function myFunction() {
        var str = "hello";
        var splitting = str.split(""); 
        var reversed_array=splitting.reverse();
        var result=reversed_array.join("");
        document.getElementById("demo").innerHTML = result;
        }
    </script>
    </code></pre>
    

    使用的功能 split :- 将字符串拆分为数组。 reverse :- 这将用于反转数组。 join :- 它将加入反向数组

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2020-01-31
      • 2019-08-01
      • 1970-01-01
      • 2012-10-23
      • 2015-03-18
      • 2013-02-20
      • 1970-01-01
      • 2022-11-21
      相关资源
      最近更新 更多