如何改变循环成为地图?

时间:2019-03-18 08:03:33

标签: javascript reactjs ecmascript-6

我还没有找到将其更改为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 个答案:

答案 0 :(得分:1)

您可以尝试这种方式

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;
 };

答案 1 :(得分:0)

您可以拿Array#find并返回找到的物品。

install_requires

答案 2 :(得分:0)

使用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;
  };
}