数组去重--new Set()

今天看到了个去重的方法: new Set()。

Set是一种类似于数组的结构,本身成员都是唯一的,具体内容介绍,可以查看阮一峰大牛的es6教程,放下链接:

http://es6.ruanyifeng.com/#docs/set-map

很简单的一个操作,就是在输入框中输入数组,紧接着显示出来,点击合并按钮可以看到合并去重后的数组。 

代码简单贴一下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组去重</title>
</head>
<body>
    <div id="main">
        <p class="tip">数组各个元素请用空格分开</p>
        数组a: <input type="text" id="arr1"> <p id="text1"></p><br>
        数组b: <input type="text" id="arr2"> <p id="text2"></p><br>
        <input type="button" value='合并' id="combine">
        合并后的数组是: <b id='result'></b>
    </div>
    <script>
    function combine(){
        let arr = [].concat.apply([],arguments);
        return Array.from(new Set(arr))
    }
    
    let arr1 = document.getElementById('arr1');
    let arr2 = document.getElementById('arr2');
    let result = document.getElementById('result');
    let text1 = document.getElementById('text1');
    Array.from(document.getElementsByTagName('input')).filter(input=>input.type=='text').forEach(function(item,index,array){
        item.addEventListener('keyup', function(){
            //规则:数组元素中间的空格无论多少都不计
            let a = item.value.replace(/^\s+|\s+$/,'').split(' ');
            if(a.length){
                item.nextSibling.innerHTML = '['+a+']';
            }
        })
    });
    document.getElementById('combine').οnclick=function(){
        let a1 = arr1.value.split(' ');
        let a2 = arr2.value.split(' ');
        result.innerHTML = combine(a1,a2);
    }
    
    </script>
</body>
</html> 

结果就是不出来,什么原因???

排查到给每一个input添加的事件之前没问题,继续进入事件中,发现原来又是自己粗心大意造成的。

item.addEventListener('keyup', function(){
            //规则:数组元素中间的空格无论多少都不计
            let a = item.value.replace(/^\s+|\s+$/,'').split(' ');
            if(a.length){
                item.nextSibling.nextSibling.innerHTML = '['+a+']';
            }
        }) 

原来item.nextSibling并没有拿到相邻的p标签,而是空格所在的textNode节点,故而需要item.nextSibling.nextSibling才能拿到p标签。

平时HTML代码中为了看起来整齐没少加个空格换行这种符号,可是js处理的时候,它并不知道你是为了好看呀。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值