【问题标题】:Javascript version of list.poplist.pop 的 Javascript 版本
【发布时间】:2022-01-11 19:25:44
【问题描述】:

我正在尝试创建一个 javascript 版本的 python pop 函数。

这是我目前所拥有的:

function pop(arr, idx) {
  arr = arr.splice(0, idx).concat(arr.splice(idx + 1));
  console.log(arr);
}

我不确定为什么它只返回第一部分而不与第二部分结合。

【问题讨论】:

  • splice() 返回一个包含所有已删除元素的数组。当您不传递第二个参数时,不会删除任何内容,因此 arr.splice(idx + 1) 不会删除任何内容并返回一个空数组。相反,arr.splice(0, idx) 删除从位置 0 开始的 idx 数量的项目。顺便说一句,JS 已经有Array#pop了。
  • 我对这个问题投了反对票,因为我不知道你用什么称呼它或者你期望从中得到什么;这些都是数组函数,并且有明确的描述,我想你只需要调试一下,如果链被破坏,则打破内联语句
  • 不要与JavaScript's array pop 混淆,后者会删除最后一个元素。

标签: javascript arrays


【解决方案1】:

你在寻找这样的东西吗?也许您可以对其进行修改,以便 pop 函数返回已删除的元素。

const arr1 =  [10,20,30,40,50,60];
const arr2 =  [10,20,30,40,50,60];
const arr3 =  [10,20,30,40,50,60];

function pop(arr, idx) {
    removedEl = arr.splice(idx,1)[0];
  console.log('removed element: ',removedEl)
  console.log('final array: ',arr);
}

pop(arr1,0);
pop(arr2,2);
pop(arr3,5)

【讨论】:

    【解决方案2】:

    Array.splice() 修改数组。它不会创建新数组。你只需要这个:

    const pythonPop = ( arr , i = -1 ) => arr.splice(i,1)[0];
    

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2017-02-18
      • 2012-07-03
      • 2013-03-19
      • 1970-01-01
      • 2022-11-16
      • 2011-12-29
      • 2013-11-03
      相关资源
      最近更新 更多