Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将循环更改为地图?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 如何将循环更改为地图?

Javascript 如何将循环更改为地图?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我还没有找到一种方法将for更改为映射,因此我的计划不会使用for,而是希望在该函数的每个函数中使用映射 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].i

我还没有找到一种方法将for更改为
映射
,因此我的计划不会使用for,而是希望在该函数的每个函数中使用映射

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;
};
variantDefault=(colorId,sizeId)=>{
让选定的=[];
设i=0;
if(this.props.index==0){
对于(i=0;i
您可以取回找到的物品

variantDefault = (colorId, sizeId) => this.props.values.find(
    ({ id }) => id === [colorId, sizeId][this.props.index]
) || [];

使用
Array.prototype.filter
似乎更合适

variantDefault=(colorId,sizeId)=>{
if(this.props.index.isBetween(0,arguments.length,1))返回[];
var compareTo=参数[this.props.index];
返回这个.props.values.filter(item=>item.id==compareTo);
};您可以这样尝试

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

您的意思是要使用
Array.map
?请进一步解释你的问题。同时添加所有相关代码。请添加
、您得到的内容以及不起作用的内容。这是一个示例。您甚至可能不需要
map
。类似于
find
filter
的功能可能会起作用。请发布预期的行为,而不是尝试的解决方案如果这应该是尝试使用
数组#映射
,那么它是不正确的,因为该方法根本不适合这样做。如果这是关于,那么我不确定它与这个问题有什么关系。
Array.prototype.map
用于数组A[n],并返回一个长度(n)相同的数组A'。我想你需要的是
Array.prototype.reduce
这个问题真的不清楚。我也会选择
.find
,但它会打破当前的行为,返回最后一个匹配项,因为它会在找到每个匹配项时不断覆盖
选定的
。我知道,但如果给定的代码起作用,然后我假设一个唯一的结果。@NinaScholz问题中的代码将返回找到的最后一个元素,而您的代码将返回第一个元素。(有可能op想要返回第一个或
推送
并返回全部)好的,注释的另一部分:variantDefault是单数的。只要op没有说明op想要什么,也没有向问题提供一些数据,任何答案都是猜测。