Как изменить цикл, чтобы стать картой? - PullRequest
0 голосов
/ 18 марта 2019

Я не нашел способа перейти на map, поэтому мой план не будет использовать для, но я хочу использовать карты в каждой функции этой функции

variantDefault = (colorId, sizeId) => {
  let selected = [];
  let i = 0;
  if (this.props.index === 0) {
    for (i = 0; i < this.props.values.length; i++) {
      if (this.props.values[i].id === colorId) {
        selected = this.props.values[i];
      }
    }
  }
  if (this.props.index === 1) {
    for (i = 0; i < this.props.values.length; i++) {
      if (this.props.values[i].id === sizeId) {
        selected = this.props.values[i];
      }
    }
  }
  console.log(selected);
  return selected;
};

Ответы [ 3 ]

1 голос
/ 18 марта 2019

вы можете попробовать таким образом

variantDefault = (colorId, sizeId) => {
let selected = [];
if (this.props.index === 0) {
   this.props.values.map((data) => {
    if(data.id === colorId){
    selected.push(data)
    }
  })
}
if (this.props.index === 1) {
this.props.values.map((data) => {
  if (data.id === sizeId) {
    selected.push(data)
  }
})
}
console.log(selected);
return selected;
 };
0 голосов
/ 18 марта 2019

Использование Array.prototype.filter кажется более подходящим.

variantDefault = (colorId, sizeId) => {
  if (this.props.index.isBetween(0, arguments.length, 1)) return [];
  var compareTo = arguments[this.props.index];
  return this.props.values.filter(item => item.id === compareTo);
};

Если вы хотите вернуть только последний найденный элемент (что и происходит в вашем примере), добавьте вызов Array.prototype.pop в отфильтрованный массив.

Вы можете добавить функцию isBetween, выполнив:

if (typeof Number.prototype.isBetween !== "function") {
  Number.prototype.isBetween = function(start, end, inclusive) {
    if (typeof start !== "number" || isNaN(start)) throw Error("Start is not a number");
    if (typeof end !== "number" || isNaN(end)) throw Error("End is not a number");
    return inclusive ? start <= this && this <= end : start < this && this < end;
  };
}
0 голосов
/ 18 марта 2019

Вы можете взять Array#find и вернуть найденный предмет.

variantDefault = (colorId, sizeId) => this.props.values.find(
    ({ id }) => id === [colorId, sizeId][this.props.index]
) || [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...