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()改为使用.
极其紧凑的 lodash 版本,使用xor 函数,用于创建仅在一个数组中找到的新值数组,而在另一个数组中则找不到
xor(array, [valueYouWantToToggle])
Run Code Online (Sandbox Code Playgroud)
我的 ES* 变体
const toggleArrayValue = (arrayList, arrayValue) =>
arrayList.includes(arrayValue)
? arrayList.filter(el => el !== arrayValue)
: [...arrayList, arrayValue]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6843 次 |
| 最近记录: |