Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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_Ecmascript 6 - Fatal编程技术网

Javascript 在数组中包含精确匹配项

Javascript 在数组中包含精确匹配项,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个数组中的项目列表。我想将计数作为后缀添加到每个项目中。我知道我将使用reduce,因为我必须与上一个项目进行比较,但仍然坚持使用include,因为它是部分匹配的 constguest=[“男”、“男”、“女”] const r=来宾减少((累计、g、索引)=>{ 如果(累计包括(g)){ g=g+(指数+1) }否则{ g=g+指数 } 累计=[…累计,g] 返回累计 },[])//期望成为[male1,male2,female1] console.log('r',r)您可以使用它来

我有一个数组中的项目列表。我想将计数作为后缀添加到每个项目中。我知道我将使用reduce,因为我必须与上一个项目进行比较,但仍然坚持使用include,因为它是部分匹配的

constguest=[“男”、“男”、“女”]
const r=来宾减少((累计、g、索引)=>{
如果(累计包括(g)){
g=g+(指数+1)
}否则{
g=g+指数
}
累计=[…累计,g]
返回累计
},[])//期望成为[male1,male2,female1]
console.log('r',r)
您可以使用它来处理数组,维护您看到每种来宾类型的次数计数,并将其附加到数组中的值:

constguest=[“男”、“男”、“女”]
让计数={}
const r=guest.map(g=>{
计数[g]=(计数[g]| 0)+1;
返回g+计数[g];
});

log('r',r)
您离得很近,只需要一个计数器

    const guest = ["male", "male", "female"]
    let male = 1;
    let female = 1;
    const r = guest.reduce((accum, g) => {
      if (g === 'male') {
        accum.push(g + male++)
      } else {
        accum.push(g + female++)
      }
      return accum;
    }, []);

    console.log('r', r)

我认为在这种情况下,在对象中存储每个性别的计数可能更有意义,然后在reduce函数中,增加计数,并根据存储在对象中的计数创建最终的“guestId”字符串

此代码实现了您想要的结果:

constguest=[“男”、“男”、“女”]
常量计数={男性:0,女性:0}
const r=来宾减少((累计、g、索引)=>{
计数[g]+=1
const guestId=`${g}${counts[g]}`
累计推力(guestId)
返回累计
},[])//期望成为[male1,male2,female1]
console.log('r',r)
我的方式。。。只需array.map和(不需要任何临时计数元素)

constguest=[“男”、“男”、“女”]

const r=guest.map((c,i,t)=>c+(t.filter((el,ix)=>el==c&&ix以我的方式。您不需要任何临时计数元素。。。