使用js数组去重操作!

发布于 2022-09-12 13:46:21 字数 1926 浏览 7 评论 0

已知:

let array = [
['name1','18'],
['name2','30'],
['name1','32'],
['name2','32'],
['name3','20'],
]

所求:

array = [
['name1','32'],
['name2','32'],
['name3','20'],
]

需求是:多选的级联操作,第一层多选,第二层单选;
逻辑是:判断二维数据内的第一项不能重复,如果第一项name重复,就保留靠后的age,删掉前项重复的数组;

补充代码
html

<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.14.1/lib/index.js"></script>
<div id="app">
<div class="block">
  <span class="demonstration">默认显示所有Tag</span>
  <el-cascader
     v-model="dataInfo"          
     @change="cascaderChange"
    :options="options"
    :props="props"
    clearable></el-cascader>
</div>
</div>

css

@import url("//unpkg.com/element-ui@2.14.1/lib/theme-chalk/index.css");

js

var Main = {
    data() {
      return {
        dataInfo:[],
        props: { multiple: true },
        options: [{
          value: 1,
          label: '东南',
          children: [{
            value: 2,
            label: '上海'
            }, {
            value: 7,
            label: '江苏',
          }, {
            value: 12,
            label: '浙江',
          }]
        }, {
          value: 17,
          label: '西北',
          children: [{
            value: 18,
            label: '陕西',
          }, {
            value: 21,
            label: '新疆维吾尔族自治区',
          }]
        }]
      };
    },
    methods: {
      cascaderChange(value) {
        console.log(value,'value');
        let newVal = [...new Map(value)]
        console.log(newVal,'newVal');
        console.log(this.dataInfo,'this.dataInfo');
        this.dataInfo = newVal
      }
    }

};
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')

在线编辑器:https://codepen.io/pen/,复制可用

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

耳钉梦 2022-09-19 13:46:21
[...new Map([
    ['name1','18'],
    ['name2','30'],
    ['name1','32'],
    ['name2','32'],
    ['name3','20'],
])]
写下不归期 2022-09-19 13:46:21
Object.entries(Object.fromEntries([
    ['name1','18'],
    ['name2','30'],
    ['name1','32'],
    ['name2','32'],
    ['name3','20'],
]))
懵少女 2022-09-19 13:46:21

这种数据最好是预先后台处理,否则层级多、数据多,很容易出错,因为数组去重后你不保留,每次访问都进行处理,效率很低啊。
这种在逻辑上最后是后台预先处理,化时间处理一次,前台直接使用就好。

素食主义者 2022-09-19 13:46:21

看了下面这么多人的回答,我总结一个:
1、数据层面的操作在后端返回的时候,不应该已经处理完了?还要前端做去重,这是后端做的事
2、你这是级联的数据,还是多级多选的模式,看起来数据量不大,但是影响的是后续的操作
3、数组去重的方式很简单,你去重后,级联选择器(也就是多选框)已经被重置了,你想在筛选后去做初始化类似的赋值你得重新生成一次联选择器

有问题欢迎交流

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文