【问题标题】:Copy substring of string array into new array in Javascript将字符串数组的子字符串复制到Javascript中的新数组中
【发布时间】:2012-07-11 19:37:09
【问题描述】:

我希望在不创建引用的情况下将字符串数组的子字符串复制到新数组中。这让我很头疼,但这应该很简单。

我在循环中尝试了NewArray[n] = OldArray[n].substr(x,y).slice(0),但不起作用。 (之后我需要做一个NewArray.sort())。

举个例子,假设我有一个 OldArray 有 2 个元素:

['River', 'Lake']

我希望新数组由旧数组的前 2 个字符(子字符串)组成,这样:

['Ri', 'La']

【问题讨论】:

    标签: javascript arrays string sorting


    【解决方案1】:

    将字符串数组的子字符串复制到新数组中而不创建引用

    字符串是 JavaScript 中的原始值,而不是对象。将旧的值分配给新数组时将没有引用,尤其是在使用substr 创建新字符串时。您使用的 slice(0) 在与字符串一起使用时是多余的,在您的情况下也不需要在数组上。

    您的代码应该可以工作:

    var oldArray = ["River", "Lake"];
    
    var newArray = [];
    for (var i=0; i<oldArray.length; i++)
       newArray[i] = oldArray[i].substr(0,2);
    
    // newArray: ["Ri", "La"]
    

    【讨论】:

    • 有一天,在遥远的未来,我们将为此使用 ECMAScript 5 的 Array.map。 :P
    • 谢谢!我终于注意到代码中的错误确实有点低。我测试了排序,问题出在输出的处理上。
    • 你也可以只使用newArray.push(oldArray[i].substr(0,2));
    • @MattiasBuelens:是的,但我认为var newArray=oldArray.map(function(str){return str.substr(0,2);}); 在这里有点开销。循环会快得多。
    【解决方案2】:

    这对我有用。谢谢@Bergi

    const newArray = oldArray.map( str => str.substr(0,2) ); 
    

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 2020-11-04
      • 2015-03-23
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2016-01-05
      • 2015-10-22
      相关资源
      最近更新 更多