如果存在,如何从数组中删除值或将其推入数组(如果不存在)?

127*_*238 9 javascript vue.js

如果存在,如何从数组中删除值或将其推入数组(如果不存在)?

HTML:

...
<button @click="addToOpenedMenuPosition(item.id)"
...
Run Code Online (Sandbox Code Playgroud)

Vue.js:

data: function() { return {
    openedMenuPositionIds: [],
    ...
}
Run Code Online (Sandbox Code Playgroud)

Man*_*anu 8

一个简单的js实现

const arr = ["one","two","three"]; //example array
const newId="one";                 //new id 

if(!arr.includes(newId)){          //checking weather array contain the id
    arr.push(newId);               //adding to array because value doesnt exists
}else{
    arr.splice(arr.indexOf(newId), 1);  //deleting
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)


Ifa*_*uki 6

我假设这些元素是唯一的,所以:

它非常简单。您可以检查.includes()它是否在数组中,并使用 查找 id 的索引.indexOf。然后使用.splice()找到的索引查找元素,否则只需将其推入数组即可。

您需要return在那里“停止”该功能才能继续:

addToOpenedMenuPosition(id){
   let arr = this.openedMenuPositionIds;
   if(arr.includes(id)){
      arr.splice(arr.indexOf(id), 1);
      return;
   }
   arr.push(id);
}
Run Code Online (Sandbox Code Playgroud)


Has*_*mam 2

通过删除创建一个新数组item.id,但如果item.id不退出,则不会删除任何内容,我们可以安全地添加item.id,否则我们将返回删除后的修改后的数组item.id

const newMenuPositionIds = menuPositionIds.filter(({id}) => id !== item.id);
if(newMenuPositionIds.length === menuPositionIds.length) {
    newMenuPositionIds.push(item.id);
}
return newMenuPositionIds;
Run Code Online (Sandbox Code Playgroud)