如何用另一个给定的数组元素替换数组元素?

时间:2015-09-07 16:11:19

标签: javascript arrays

我想创建一个完全覆盖原始数组的函数。

function putDatainthis(arr) {
    //....some ways to get data
    arr = [data,data,data...]; //this just reassigns arr = to new array original that was passed as reference hasn't been modified.
}

//所以现在只有我能想到的是:

function putDatainthis(arr) {
    var data = [3,4,6,2,6,1];
    arr.length=0;
    data.forEach(function(e){
      arr.push(e);
    });
}

但我想知道它可以改进,还是有更多的原生方式。

3 个答案:

答案 0 :(得分:3)

您正在寻找 Array.prototype.splice() 功能,这是您的选择:



function putDataInThis(arr) {
  var data = [3, 4, 6, 2, 6, 1];
  arr.length = 0;

  arr.splice(0, arr.length, data);
  return arr;
}

alert(putDataInThis(["h", "g"]).join(","));




<强>外植

在以下arr.splice(0, arr.length, data)语句中,我们使用splice()函数,其中包含以下参数:

  • 0替换的起始索引。
  • arr.length作为要替换的元素数量。
  • data是要放入数组中的新值列表。

请阅读 Array.splice( ): insert, remove, or replace array elements 以获取更多信息。

答案 1 :(得分:1)

我认为你可以使用jquery merge

function putDatainthis(arr) {
    var data = [3,4,6,2,6,1];
    $.merge(arr, data);
}

答案 2 :(得分:0)

试试这种方式。

startDwellClicker() {
    Input, key, V L1, {space}.{esc}.{shift}.{enter}.{tab}.{Ctrl} ;Waits for Anykey to be pressed
    Run, pssuspend "-r \\%A_ComputerName% dwellclicker.exe" ;Resume DwellClicker
    pauseDwellClicker()
}

pauseDwellClicker() {
    Loop {
        Input, key, V L1 T4 
        if (ErrorLevel = "Timeout") ;Waits for 4 second Time Out
            Break
    }
    Run, pssuspend "\\%A_ComputerName% dwellclicker.exe" ;Pause DwellClicker
    startDwellClicker()
}