判断两个数组内有无相同的值,如果有则改变状态

判断两个数组内相同的值,如果有相同的值则改变对应的值状态
举个实际场景的例子,一个下拉菜单,里面有四个人,可以选中人员,如果人员已经选中,那么就将它的状态变为不可选。
在这里插入图片描述
这样就涉及到了两个数组,一个是弹窗内供选择人员的数组,一个是已经选择了的人员数组,如果弹窗内的人员已经被选择过了,那么即不可再选择,此时就涉及到了将已经选择的人员与所有供选择的人员进行对比。

const ryList = [
    { key: '1', disabled: false, name: 'zhangsan', sex: '男',  country: '国籍' },
    { key: '2', disabled: false, name: 'lisi', sex: '男', country: '国籍' },
    { key: '3', disabled: false, name: 'wanger', sex: '男', country: '国籍' },
    { key: '4', disabled: false, name: 'lvqian', sex: '男', country: '国籍' },
];
const checkedPerson = ['zhangsan','lisi'];
ryList.filter(function (item,index) {
    //if (activityKey == item.key) {  //此处是做的如果选择了多人 tab选项卡显示的人员名字用/隔开
        //item.name = checkedPerson.toString().replace(/,/g, '/')
    //}
    let i = 0;
    while (i < checkedPerson.length) {
        if (item.name == checkedPerson[i]) { 
        	ryList[index].disabled = true; i = checkedPerson.length; 
        } else { ++i; }
    }
    // return checkPerson.indexOf(item.name) == -1; //此处做的如果不想要选择的那个选项卡,可以删除
});

如果供选择的人员(ryList )里面有选中(checkedPerson )的人,那么将数组内的disabled值改为true,此方法就算顺序不一样,也可生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果多个对话框出现相同的内容,可能是由于多个对话框共用了同一个组件实例的数据,导致数据在多个对话框中同时更新。解决方法有两种: 1. 每个对话框都使用不同的组件实例。这可以通过在打开对话框时动态创建新的组件实例来实现。示例代码如下: ```javascript import Vue from 'vue' import MyDialog from './MyDialog.vue' // 打开对话框时创建新的组件实例 const dialogInstance = new Vue({ render: h => h(MyDialog) }) dialogInstance.$mount() document.body.appendChild(dialogInstance.$el) // 关闭对话框时销毁组件实例 dialogInstance.$destroy() document.body.removeChild(dialogInstance.$el) ``` 2. 每个对话框都使用独立的数据。这可以通过在组件内部使用局部数据来实现。示例代码如下: ```javascript <template> <el-dialog :visible.sync="visible"> <p>{{ message }}</p> <el-button @click="visible = false">关闭</el-button> </el-dialog> </template> <script> export default { data() { return { visible: false, message: '' } }, methods: { openDialog(message) { this.message = message this.visible = true } } } </script> ``` 在上面的代码中,每个对话框都有独立的 `message` 数据,打开对话框时通过调用 `openDialog` 方法来设置数据。这样可以保证每个对话框都有自己独立的数据,避免出现相同的内容。 ### 回答2: ElementUI是一款基于Vue.js开发的前端UI框架,它提供了丰富的组件库,包括对话框(Dialog)组件。当多个对话框需要显示相同的内容时,我们可以通过以下方法解决: 1. 定义一个公共的数据对象:可以在Vue组件中定义一个公共的数据对象,用于存储对话框的内容。这样所有需要显示相同内容的对话框可以共享这个数据对象,在不同的对话框中同时引用它。这样,当对话框内容发生改变时,所有引用的对话框都会同步更新。 2. 通过插槽(slot)动态传入内容:ElementUI的对话框组件支持插槽功能,可以在对话框组件中定义插槽,然后在使用对话框组件的地方通过插槽传入需要显示的内容。这样,每个对话框可以根据需要传入不同的内容,而不是固定使用相同的内容。 3. 使用全局变量或状态管理工具:如果多个对话框需要动态显示相同的内容,可以考虑使用全局变量或状态管理工具(如Vuex)来管理对话框内容。通过将内容存储在全局变量或状态中,对话框可以通过读取全局变量或状态来获取相同的内容,并实现内容的同步更新。 总之,要解决ElementUI多个对话框出现相同的内容,可以通过定义公共数据对象、使用插槽或全局变量等方法来实现对话框内容的共享和动态更新。根据具体需求和场景选择合适的方法来解决该问题。 ### 回答3: 在elementui中,如果多个对话框出现相同的内容,可以采取以下几种解决方案: 1. 使用组件属性和事件: - 在对话框组件中,通过设置不同的属性,如dialog-title或dialog-message,使每个对话框的标题和内容不同。 - 可以为每个对话框组件设置一个唯一的ID,并在事件函数中通过判断ID来确定执行不同的逻辑。 2. 使用动态数据: - 可以通过在数据中维护一个数组数组中的每个元素代表一个对话框的内容。 - 在显示对话框时,通过动态绑定数据的方式,将对应索引的内容传递给对话框组件。 - 这样不同的对话框就可以根据不同的索引来显示不同的内容。 3. 使用插槽slot: - 对话框组件通常会提供一些插槽slot,允许在组件内部添加自定义的内容。 - 可以利用插槽slot在每个对话框中添加不同的内容,从而使它们呈现不同的外观和功能。 4. 动态创建对话框: - 可以通过在代码中动态创建对话框的实例来解决相同内容问题。 - 在需要显示对话框的地方,根据需要创建新的对话框实例,并设置对应的内容。 - 这样每个对话框就是独立的实例,不会出现相同内容的问题。 总结来说,解决elementui多个对话框出现相同内容的问题,可以通过设置不同的属性、使用动态数据、插槽slot或者动态创建对话框的方式来区分每个对话框的内容,从而达到解决问题的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值