在Javascript中将值切换到数组中和从数组中切换出来

JPM*_*Mox 10 javascript arrays jquery

我想要一个简单的数组,即

var simpleArray = ["SE1","SE2","SE3"];
Run Code Online (Sandbox Code Playgroud)

我想在动作发生时检查此数组(点击谷歌地图图层),它会将值传递给此函数并将值添加到数组中,或者如果数组已存在则将其从数组中删除.

我现在只是看到.splice/push/inArray/indexOf(在IE中不起作用)/ grep(jQuery)时有点困惑 - 不确定最佳实践是什么.

nnn*_*nnn 26

假设项目的顺序无关紧要,你可以这样做:

function toggleArrayItem(a, v) {
    var i = a.indexOf(v);
    if (i === -1)
        a.push(v);
    else
        a.splice(i,1);
}
Run Code Online (Sandbox Code Playgroud)

从版本9开始,该.indexOf()方法在IE中工作,但如果您需要支持较旧的IE版本,则可以使用MDN中所述的垫片.或者,如果您正在使用jQuery,请$.inArray()改为使用.


eha*_*hab 6

极其紧凑的 lodash 版本,使用xor 函数,用于创建仅在一个数组中找到的新值数组,而在另一个数组中则找不到

xor(array, [valueYouWantToToggle])
Run Code Online (Sandbox Code Playgroud)


Den*_*dov 5

我的 ES* 变体

const toggleArrayValue = (arrayList, arrayValue) =>
  arrayList.includes(arrayValue)
    ? arrayList.filter(el => el !== arrayValue)
    : [...arrayList, arrayValue]
Run Code Online (Sandbox Code Playgroud)