Найти объект в массиве? - PullRequest
       6

Найти объект в массиве?

1 голос
/ 28 сентября 2019

Представьте, что у меня есть массив таких объектов (фиктивный код):

const chosenBets = [{...}, {...}] // 2 items

И я хочу удалить конкретный элемент из массива:

{id: 0, // is unique
 label: 1,
 odd: 1.33,
 oddIndex: 0,
 team_home: "Liverpool",
 team_away: "Sheffield United",
 matchCardIndex: 0,}

Итакэтот массив теперь:

const chosenBets = [{...}] // 1 items

Как бы я этого достиг?

Ответы [ 3 ]

5 голосов
/ 28 сентября 2019

Вы можете использовать массив filter

const chosenBets = [{
  id: 0, // is unique
  label: 1,
  odd: 1.33,
  oddIndex: 0,
  team_home: "Liverpool",
  team_away: "Sheffield United",
  matchCardIndex: 0
}, {
  id: 1, // is unique
  label: 1,
  odd: 1.33,
  oddIndex: 0,
  team_home: "Liverpool",
  team_away: "Sheffield United",
  matchCardIndex: 0
}];

const filteredData = chosenBets.filter(item => item.id === 1);
console.log(filteredData);
1 голос
/ 28 сентября 2019

Вы можете использовать splice

var a = [{
    id: 0, // is unique
    label: 1,
    odd: 1.33,
    oddIndex: 0,
    team_home: "Liverpool",
    team_away: "Sheffield United",
    matchCardIndex: 0,
  },
  {
    id: 0, // is unique
    label: 11,
    odd: 1.33,
    oddIndex: 0,
    team_home: "Liverpool",
    team_away: "Sheffield United",
    matchCardIndex: 0,
  }
]
a.forEach((e, j) => {
  if (e.label == 1)
    a.splice(j, 1);
})
console.log(a)
0 голосов
/ 28 сентября 2019

Если вы хотите удалить конкретный и уникальный объект, я бы сделал что-то вроде:

let chosenBets = [{
  id: 0, // is unique
  label: 1,
  odd: 1.33,
  oddIndex: 0,
  team_home: "Liverpool",
  team_away: "Sheffield United",
  matchCardIndex: 0
}, {
  id: 1, // is unique
  label: 1,
  odd: 1.33,
  oddIndex: 0,
  team_home: "Liverpool",
  team_away: "Sheffield United",
  matchCardIndex: 0
}];

let index = chosenBets.findIndex(({id}) => id === 1);

// if you want to mutate the original array, otherwise use `slice`
chosenBets.splice(index, 1);
console.log(chosenBets);

filter лучше, если вы хотите удалить группу элементов, а не только один.Причина в том, что он продолжает повторять все элементы массива, поэтому он всегда повторяет весь массив, даже если элемент, который вы хотите удалить, является первым.Используя findIndex, вы просто выполняете итерацию до тех пор, пока не найдете элемент, а затем возвращаете индекс: таким образом, в среднем он сокращает цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...