Javascript объект, содержащий несколько ключей и проверяющий все значения - PullRequest
0 голосов
/ 04 мая 2020

У меня есть следующий код:

<button className={`actionBoxButton ${props.moves[0].moveName !== "FirstPassMove" && props.moves[0].moveName !== "PassMove"  ? "actionBoxButtonGrey" : ''}`}

props.moves выглядит следующим образом:

{userId: 30, moveId: 60, moveName: "FirstSettlementMove", building: {…}}
1: {userId: 30, moveId: 62, moveName: "FirstSettlementMove", building: {…}}
2: {userId: 30, moveId: 64, moveName: "FirstSettlementMove", building: {…}}
3: {userId: 30, moveId: 66, moveName: "FirstSettlementMove", building: {…}}
4: {userId: 30, moveId: 68, moveName: "FirstSettlementMove", building: {…}}
5: {userId: 30, moveId: 70, moveName: "FirstSettlementMove", building: {…}}
6: {userId: 30, moveId: 72, moveName: "FirstSettlementMove", building: {…}}
7: {userId: 30, moveId: 74, moveName: "FirstSettlementMove", building: {…}}

Это проверяет, находится ли props.move (который является объектом, а не массивом) ) элемент 0 имеет ключ moveName! == FirstPassMove или PassMove. Но я не хочу проверять только элемент 0, но все элементы объекта. Некоторые говорили, что я должен использовать Array.some, но так как это не массив, который не работал.

Привет

Ответы [ 2 ]

1 голос
/ 04 мая 2020

В вашем случае вам нужно Object.values от этого объекта и выполнить итерацию по нему.

Пример:

const moves = {
  0: {
    moveName: "FirstPassMove"
  },
  1: {
    moveName: "PassMove"
  },  
  2: {
    moveName: "Other"
  },
}

const isTheRightMove = Object.values(moves).some(move => ["FirstPassMove", "PassMove"].includes(move.moveName))

console.log(isTheRightMove) // true

const moves2 = {
  0: {
    moveName: "Other"
  },
  1: {
    moveName: "Other"
  },  
  2: {
    moveName: "Other"
  },
}



const isTheRightMove2 = Object.values(moves2).some(move => ["FirstPassMove", "PassMove"].includes(move.moveName))

console.log(isTheRightMove2) // false
0 голосов
/ 04 мая 2020

вы можете сделать таким образом

<button className={`actionBoxButton ${props.moves.find((move) => move.moveName !== "FirstPassMove" && move.moveName !== "PassMove") != null  ? "actionBoxButtonGrey" : ''}`}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...