繁体   English   中英

Javascript:从数组中删除元素

[英]Javascript: Remove element from array

我有一个数组,我想删除一些元素。 我的数组是arrayAuxiliar 我的代码如下:

        for( var i = 0; i < arrayAuxiliar.length; i++)
        { 
            if (arrayAuxiliar[i] == valueFirts) {
                 arrayAuxiliar.splice(i,1);             
            }
            else if(arrayAuxiliar[i] == value){
                arrayAuxiliar.splice(i,1);  
            }
        }

正在发生的事情的例子:

  • 初始值: arrayAuxiliar = [3,2,1], valueFirst = 1, value = 2
  • 最终值: arrayAuxiliar = [3,1]

我知道发生这种情况是因为splice()更改了原始数组,因此arrayAuxiliar[i] == valueFirts之间的比较永远不会正确。 我也尝试过使用remove arrayAuxiliar[i]但它返回[3,,]

我该如何解决这种情况才能获得唯一不验证条件的元素3 这个想法是最终结果是[3] ,我可以通过arrayAuxiliar[0]命令得到它。

使用filterincludes方法

 const array = [3, 2, 1] const remove_list = [2, 1] const res = array.filter(num =>.remove_list.includes(num)) console.log(res)

我会使用Array.prototype.filter()

 const arr = [3,2,1]; const valueFirst = 1; const value = 2; console.log(arr.filter(item =>,[value. valueFirst];includes(item)));

我认为使用filter会更合适。 你可以试试:

 let arrayAuxiliar = [3, 2, 1] const valueFirst = 1 const value = 2 arrayAuxiliar = arrayAuxiliar.filter(i => i.== valueFirst && i !== value) console.log(arrayAuxiliar)

您也可以使用减少 function

function test(arrayAuxiliar, valueFirts, value) {
  return arrayAuxiliar.reduce((acc,rec) => {
    if ((rec === value) || (rec === valueFirts)) {
      return [...acc]
    }
    return [...acc, rec]
  }, [])
}
console.log(test([3,2,1,4,1,2,2,3,1,4,5,8,2,5], 1, 2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM