js深拷贝、将对象转换为一维数组、查找一个元素里是否包含另一个元素的某一个值

本文介绍了JavaScript中的深拷贝函数实现、对象转为一维数组的方法,以及属性存在性和包含关系的检测技巧。通过实例展示了如何使用clone(), entries(), judgePro() 和 find() 函数进行对象操作和属性检查。
摘要由CSDN通过智能技术生成

1.深拷贝

function clone(obj){
    var newObj=null;
    if(typeof obj=='object'&&obj!==null){
        
        newObj=obj instanceof Array?[]:{};
        for(var v in obj){
            newObj[v]=clone(obj[v]);
        }
    }else{
        newObj=obj;
    }
    	return newObj;
}

2.将对象转换为一维数组

将一个对象变为二重数组后再存到一重数组内!能方便调用

{foo:‘bar’,baz:43}=> [[“foo”,“bar”],[“baz”,42]]=>[“foo”,“bar”,“baz”,42]

Object.fromEntries() 将二维数组变成对象:↑逆操作

 function entries(obj = 0) {			//传入需封装的对象
            if(obj===0){return 0;}
            let arr = [];
            obj = Object.entries(obj);
            for (const [attr, value] of obj) {
                arr[attr] = value;
            }
            return arr;
        }

let o=entries(obj);						//use

3.属性是否在对象里

function judgePro(obj,pro){
    if(pro in obj){
        	if(obj.hasOwnProperty(pro)){{
                 console.log(`${pro}对象在属性里,自有的`);
            }else{
                console.log(`${pro}对象在属性里,继承的`);
            }}else{
                console.log(`${pro}对象不在属性里`);
            }                      
    }
}
对象.hasOwnProperty(prop) 判断属性在哪个对象,是否是一级或者继承

in 检测可枚举属性

instanceof 检测构造函数是谁

4.查找一个元素里是否包含另一个元素的某一个值

  function find(){
    let obj={
           sun: { value: ["晴天","晴"], path: "./weatherImg/sun.png" },
           rain: { value: ["小雨", "阵雨", "大雨", "中雨"], path: "./weatherImg/rain.png" },
           cloud: { value: ["多云", "少云", "云"], path: "./weatherImg/cloud.png" }
       }
    let obj1={value:"晴天"};
    var arr=Object.values(obj).find(item=>item.value.includes(obj1.value)).path;               
// Object.values(obj).find(item => item.value.includes(weatherObj.weather)).path;
    return arr;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值