【问题标题】:Swapping Two Values in an Array [duplicate]交换数组中的两个值
【发布时间】:2013-12-30 21:00:16
【问题描述】:

我无法弄清楚哪些 JavaScript 代码在交换数组中的两个值(本例中为数字)时会起作用。

该函数(称为move)会将您单击的值的位置与“”的位置交换。数组值显示在页面上,当您单击任何数字(通过onclick)时,函数将启动。

boxArray = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15",""]

function move() {

}

【问题讨论】:

  • 能否请您也发布 html 和其他代码?如果您可以创建一个最佳的 JSfiddle。
  • 那些不是数字。它们是字符串。更重要的是,如果你做了最起码的研究,你就会发现the answer to your question is on StackOverflow already
  • 尝试使用函数:splice和indexOf
  • 这个问题看起来像是一个滑动拼图游戏的开始。
  • “数组值显示在页面上,当您单击任意数字(“onclick”)时,函数会启动。” 应该交换的 DOM 元素也是如此?还是阵列成员?或两者?我们需要更多信息才能给出合理的答案。

标签: javascript arrays


【解决方案1】:

要交换两个值,使用一些逻辑,将一个值存储在临时变量中,将第一个设置为第二个,将第二个设置为临时变量:

function swap(array, index1, index2) {
    var temp = array[index1];

    array[index1] = array[index2];
    array[index2] = temp;
}

就这么简单

FIDDLE

【讨论】:

  • 简单明了。
  • @tymeJV - 谢谢,有更好的方法可以做到这一点,但我认为没有比这更易读或更容易理解的了。
  • 不...这基本上是我在课堂上学习时白板上的确切代码:)
  • @tymeJV:在我看来,这个问题比这个答案要多得多。就像映射到对 DOM 元素的点击一样,并跟踪看起来是数组占位符成员的位置。
  • 这对一般情况来说很好,但在 OP 中,其中一个值始终是 '',不需要临时变量。 :-)
【解决方案2】:

也许是这个(这里是jsfiddle):

<button>1</button><button>2</button>

$('button').click(function() {
    var val = $(this).html();

    swap(val);
});

var boxArray = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15",""]

function swap(el) {
    var blankIndex = boxArray.indexOf(""),
        elIndex = boxArray.indexOf(el);

    boxArray[blankIndex] = el;
    boxArray[elIndex] = "";

    console.log(boxArray);
}

【讨论】:

  • +1 免费使用图书馆? ;-)
【解决方案3】:

我无法准确说出您想要做什么,但我相信我明白了它的要点。 array.splice 是您可能正在寻找的功能:

function move(arr, from, to) {
    if (from >= arr.length || to >= arr.length) return;
    var y = arr.splice(from, 1)[0];
    arr.splice(to, 0, y);
}

var x = [1,2,3];
move(x, 0, 2); // moves the value at position 0 to position 2: [2,3,1]

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多