如何通过变量值从数组中删除对象?

时间:2019-06-10 22:52:06

标签: javascript arrays object

我正在对Pokemon生成器进行编码,并尝试提供一种从结果中排除某些类型的选项。

我已经“尝试”了拼接和过滤器功能,但是我的理解还很有限,所以我可能只是错误地使用了它们。

我已经使这个变量充满了像

这样的对象
var pokemonChoices = [{
    name: 'Bulbasaur',
    type: ["Grass","Poison"]
  }, {
    name: 'Charmander',
    type: ["Fire"]
  }];

然后我有一个下拉菜单,其中包含类型和一个名为excludetype的变量,可从中获取其值。

如何做到这一点,以便我可以创建一个新的数组,例如,排除所有类型为“ Grass”的口袋妖怪或任何排除类型设置的数组?

===============================

编辑:我想我已经使用它了

  var Excludinator = pokemonChoices.filter(function( obj ) { return obj.type.includes(excludetype); }); 

  pokemonChoices = pokemonChoices.filter(function(item) {
  return !Excludinator.includes(item); 
  })

2 个答案:

答案 0 :(得分:1)

要获取包含type的{​​{1}}的所有神奇宝贝,可以将grassfilter一起使用:

includes
const pokemonChoices = [{name:'Bulbasaur',type:["Grass","Poison"]},{name:'Charmander',type:["Fire"]}];

const pokemonByType = t => pokemonChoices.filter(({ type }) => type.includes(t));

console.log(pokemonByType("Grass"));
console.log(pokemonByType("Fire"));

答案 1 :(得分:0)

我相信这就是您要实现的目标。

// Array holding your Pokemon Objects
const pokemonChoices = [
  {
    name: 'Bulbasaur',
    type: ['Grass', 'Poison'],
  },
  {
    name: 'Charmander',
    type: ['Fire'],
  },
];

// Function where you pass in the excluded type and it filters out Pokemon that include it.
const searchPokemon = exclude => {
  return pokemonChoices.filter(pokemon => !pokemon.type.includes(exclude));
};

console.log(searchPokemon('Poison'));

您可以在这些链接上找到有关Array.filter()Array.includes()的更多信息。