vue3中ref获取不到组件实例&&数组中对象的属性值去重

1、vue3中ref获取不到组件实例

原因:使用语法糖的组件是默认关闭的,也即通过模板 ref 或者 $parent 链获取到的组件的公开实例,不会暴露任何在<script setup>中声明的绑定。

解决方法: 为了在 语法糖组件中明确要暴露出去的属性,使用 defineExpose 编译器宏将需要暴露出去的变量与方法放入暴露出去就可以了

jsdefineExpose({
    getList,
})

2、数组中对象的属性值去重

方法一:

let list = [
        {name:'张三',age:1,},
        {name: '李四',age: 10,},
        {name: '王二',age: 15,},
        {name: '赵五',age: 17,},
        {name: '王二',age: 5,},
        {name: '李四',age: 19,},
    ];
let newList = [];
list.forEach((item) => {
    newList.push(item);
    // 去重
    const ChangeArr = (data) => {
        const newobj = {};
        if (data && data.length > 0) {
            data.forEach((item) => {
                newobj[item.name] = item;
            });
        }
        return newobj;
    };
    let obj = ChangeArr(newList);
    newList = Object.values(obj);
});
console.log('🚀', newList)

方法二:

let list = [
   {name:'张三',age:1,},
   {name: '李四',age: 10,},
   {name: '王二',age: 15,},
   {name: '赵五',age: 17,},
   {name: '王二',age: 5,},
   {name: '李四',age: 19,},
 ];
let obj = {};
list = list.reduce(function (item, next) {
    obj[next.name] ? '' : obj[next.name] = true && item.push(next);
    return item;
}, []);
console.log('🚀', list)

3、筛选符合需要的字段并添加到新数组中(动态添加表单)

let arr = [];
Object.getOwnPropertyNames(this.msgTypeInData).forEach((item,index) => {
     if(item.indexOf('cardNum') !== -1) {
     arr.push({
        amount:this.msgTypeInData.amount,
        cardNum: this.msgTypeInData[item],
        })
     }
})
console.log('🚀', arr)

Object.getOwnPropertyNames(obj)返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值