Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 JS:如何用新值替换数组中重复的元素_Javascript_Typescript_Ecmascript 6_Ecmascript 5 - Fatal编程技术网

Javascript JS:如何用新值替换数组中重复的元素

Javascript JS:如何用新值替换数组中重复的元素,javascript,typescript,ecmascript-6,ecmascript-5,Javascript,Typescript,Ecmascript 6,Ecmascript 5,我有一个如下所示的数组: let arr = ['11','44','66','88','77','00','66','11','66'] let newarr = ['11','44','66','88','77','00','appears at 2','appears at 0','appears at 2'] 如图所示,在这个数组中,有一些重复的元素: “11”位于位置7 “66”位于位置6和8 我想迭代我的数组,以便找到重复的元素;并将第二次出现时的索引替换为指示第一次出现索引

我有一个如下所示的数组:

let arr = ['11','44','66','88','77','00','66','11','66']
let newarr = ['11','44','66','88','77','00','appears at 2','appears at 0','appears at 2']
如图所示,在这个数组中,有一些重复的元素:

  • “11”位于位置7
  • “66”位于位置6和8
我想迭代我的数组,以便找到重复的元素;并将第二次出现时的索引替换为指示第一次出现索引的字符串

我的结果数组如下所示:

let arr = ['11','44','66','88','77','00','66','11','66']
let newarr = ['11','44','66','88','77','00','appears at 2','appears at 0','appears at 2']
正如您所能看到的那样,复制内容将替换为如下字符串:

let arr = ['11','44','66','88','77','00','66','11','66']
let newarr = ['11','44','66','88','77','00','appears at 2','appears at 0','appears at 2']
“出现在n”,其中n”是第一次出现的索引

const外观={}
常数arr=['11'、'44'、'66'、'88'、'77'、'00'、'66'、'11'、'66']
const newarr=arr.map((项目、索引)=>{
如果(外观[项目]!==未定义)返回`出现在${外观[项目]}`
否则{
外观[项目]=索引
退货项目
}
})

log(“new arr:,newarr)
这里有一个两步方法:

  • 创建一个记录首次出现的对象

  • 使用替换将源数组映射到新数组

  • 让arr=['11','44','66','88','77','00','66','11','66'];
    //记录首次发生的事件
    常数firsts=arr.reduce((acc、val、index)=>{
    if(acc[val]==‘未定义’){
    acc[val]=指数;
    }
    返回acc;
    }, {});
    log('firsts:',firsts);
    //创建带有替换的数组
    const newarr=arr.map((val,index)=>{
    返回(第一个[val]==索引)?val
    :`出现在${firsts[val]}`
    });
    log(`newarr:`,newarr)解决方案
    
    
    让arr=[“11”,“44”,“66”,“88”,“77”,“00”,“66”,“11”,“66”](
    (值、索引、自身)=>{
    if(self.indexOf(value,0)!==索引){
    return`出现在${self.indexOf(value,0)}`;
    }
    返回值;
    }
    );
    
    控制台日志(arr)索引和条件运算符在哈希表上使用闭包的简短方法

    const
    数组=['11','44','66','88','77','00','66','11','66'],
    结果=array.map(
    (索引=>(v,i)=>(索引[v]??=i)=i?v:`见${index[v]}`)
    ({})
    );
    
    控制台日志(结果)什么不起作用-实际上?请添加您尝试过的代码请不要垃圾邮件标签;您的目标是支持ES5或ES6的浏览器,或者依赖TypeScript为您进行传输,在这种情况下,两个标记都不受保证。