精华内容
下载资源
问答
  • js 对象属性遍历

    2019-04-25 23:47:00
    function 对象属性遍历(){ var obj = {x:1,y:2,c:3};for (var name in obj){ alert ( obj[name] )} } function 数组(){ var 数组=[1,2,3,[1,2,4,5,7,8],4,5]; //数组嵌套数组 var 数组2=[ {x:100},...

    function 对象属性遍历(){

    var obj = {x:1,y:2,c:3};
    for (var name in obj){
    alert ( obj[name] )
    }

    }

     

     

     

    function  数组(){
    
    var 数组=[1,2,3,[1,2,4,5,7,8],4,5];   //数组嵌套数组
    var 数组2=[
    {x:100},
    2,
    [7,8,9],
    function(){
    return 999;
    }(),
    "abc"
    ]
    
    var arr =new Array(10);
    arr[20]=100
    alert(arr)
    
    
    };

     

     

    function  test(){
    
       //数组嵌套数组
    
    var str ="yiyuyan";
    return str.charAt(6)           //alert(字符串[5]);
    
    };

     

    function  test(){
    
       //数组嵌套数组
    
    var arr =[1,2,3,4,5,6,7,8,9,10] , sum =0;
    for(var i=0;i<arr.length;i++){
    sum +=arr[i];
    }
    
    alert (sum)  ;         //alert(字符串[5]);
    
    };

     

    转载于:https://www.cnblogs.com/aladam/p/10771912.html

    展开全文
  • JS对象属性遍历

    2019-12-28 16:59:04
    const oA={name:'caiyw',age:28}; 1、for in for(item in oA){ console.log(oA[item]) } // caiyw //28 2、Object.entries Object.entries(oA).forEach((item,index)=>{ console.log(item);...// ['...

    const oA={name:'caiyw',age:28};

    1、for in

    for(item in oA){
      console.log(oA[item])
    }

    // caiyw

    //28

     

    2、Object.entries

    Object.entries(oA).forEach((item,index)=>{
      console.log(item);
    })

    // ['name','caiyw']

    //['age',28]

     

    3、Object.keys()

    let oArr=Object.keys(oA);

    oArr.forEach(item=>{

      console.log(oA[item]);

    })

    //caiyw

    //28

    展开全文
  • 对象属性遍历的几种方式及其差异。包括是否可枚举,是否继承,是否为symbol类型。


    有很长一段时间,我都没有意识到遍历也是有区别的,都是统一使用for…in。实际上在根据属性名是否可枚举,是否继承,是否为symbol类型用不同的遍历方法得到的结果也不不同,所以在这里总结一下我知道的对象的各种遍历方法及其区别,如有遗漏,欢迎补充。

    1、准备遍历的对象

    prototypeObj 为obj的原型对象,以prototypeObj为构造函数创建了obj对象后,用各种方式遍历obj。并且其中有一个属性名是属于symbol类型,还有一个不可枚举属性sex

    		function prototypeObj () {
    			this.remark = 'obj对象的原型对象';
    		}
    		prototypeObj.prototype.name = '继承属性';
    		let symbolName = Symbol('d');
    		let obj = new prototypeObj(); 
    		obj.a = '111';
    		obj.b = '222';
    		obj.c = '333';
    		obj[symbolName] = '444';
    		// 设置不可枚举属性sex
    		Object.defineProperty(obj, "sex",{ 
    			value:"female",
    			enumerable:false
    		});
    

    2、遍历

    2.1、 for…in 循环

    for…in 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。
    输出结果不包括symbolName以及sex。

    for(let key in obj) {
       console.log(key ,":", obj[key ]);
    }
    

    在这里插入图片描述

    2.2、Object.keys方法遍历

    Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。

       console.log(key ,":", obj[key ]);
    

    在这里插入图片描述

    2.3、Object.getOwnPropertyNames遍历

    Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)

       console.log("Object.getOwnPropertyNames: " + Object.getOwnPropertyNames(obj));
    

    在这里插入图片描述

    2.4、Object.getOwnPropertySymbols

    Object.getOwnPropertySymbols()可以返回对象自有的Symbol属性,原型链上的属性不会被获取。

    可以看到只返回了Symbol类型的属性名。顺便提一下,symbol类型的值不能与其他类型的值进行运算,否则会报错,所以下面的打印方法拆开了。

    		console.log("Object.getOwnPropertySymbols: ");
    		console.log(Object.getOwnPropertySymbols(obj));
    

    在这里插入图片描述

    2.5、Reflect.ownKeys

    Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举。

    		console.log("Object.getOwnPropertySymbols: ");
    		console.log(Object.getOwnPropertySymbols(obj));
    

    在这里插入图片描述

    展开全文
  • JS对象,对象序列化,对象属性遍历,对象属性删除 1.对象属性删除 var obj = { name:'zhangsan', age:12, test: 123 }; var test = 'age'; // obj.age // obj.[test] //[]访问属性,内可放变量 console.log(obj...

    对象属性删除

    var obj = {
        name:'zhangsan',
        age:12,
        test: 123
    };
    var test = 'age';
    // obj.age
    // obj.[test]
    //[]访问属性,内可放变量
    console.log(obj[test]);//12
    console.log(obj['test']);//123
    console.log(obj);
    //删除test属性
    delete obj.test;
    console.log(obj);
    
    

    命名了一个test的变量并赋予了age的值,所以第一个打印的结果为12。
    第二个打印的是obj中test的值为123,在[]中加‘’为属性名。
    第三个打印obj变量中的值为

    { name: ‘zhangsan’, age: 12, test: 123 }

    第四个打印出

    { name: ‘zhangsan’, age: 12 }

    是因为delete删除了obj中test的属性。

    对象属性遍历

    var obj2 = {
        username:'lisi',
        password:'123',
        gender:'',
        age:'',
        hobby:'',
        info:'我是一个XXX的人',
        sno:1001
    }
    //遍历对象,获取属性值,如果属性值为空,删除属性
    console.log(obj2);
    for(var key in obj2){
        //key-属性名
        // console.log(key,obj2[key])
        if(!obj2[key]){
            delete obj2[key];
        }
    }
    console.log(obj2);
    

    第一个打印出

    { username: ‘lisi’,
    password: ‘123’,
    gender: ‘’, age: ‘’,
    hobby: ‘’,
    info: ‘我是一个XXX的人’,
    sno: 1001 }

    是遍历对象中的属性
    第二个打印出{ username: ‘lisi’, password: ‘123’, info: ‘我是一个XXX的人’, sno: 1001 }是因为删除了obj2中属性值为空的属性。
    pS:注释掉的打印出来的是一个数组。

    字符串的转化

    var obj = {
        name:'zhangsan',
        age:12
    }
    console.log(obj);
    console.log(obj.toString());
    console.log(JSON.stringify(obj));
    var jsonStr = '{"name":"zhangsan","age":12}';
    console.log(JSON.parse(jsonStr));
    

    第一个打印出如下结果是因为遍历obj中的属性。

    { name: ‘zhangsan’, age: 12 }

    第二个打印出如下结果是因为toString将一个对象转化成字符串

    [object Object]

    第三个打印出如下结果是因为stringify把js字符串转化成JSON字符串,且JSON中字符串形式的都带引号

    {“name”:“zhangsan”,“age”:12}

    第四个打印出如下结果是因为parse将JSON字符串转化成JS字符串

    {“name”:“zhangsan”,“age”:12}

    JS函数

    1累加

    function add(){
        //arguments代表所有实参所在的位置,类数组对象
        console.log(arguments);
        var arr = Array.from(arguments);
        //类数组对象转成数组
        // console.log(arr);
        var total = 0;
        for(var i=0;i<arr.length;i++){
            total +=arr[i];
        }
        return total;//一定要给一个返回值
    }
    console.log( add(3,4));
    //计算多个数的累加
    console.log( add(3,4,7,9,78));
    

    打印出的结果如图,arguments是一个类数组指出所有实参所在的位置,Array.form将arguments类数组转化为数组,之后定义函数total函数进行累加。

    [Arguments] { ‘0’: 3, ‘1’: 4 }
    [ 3, 4 ]
    7
    [Arguments] { ‘0’: 3, ‘1’:4, ‘2’: 7, ‘3’: 9, ‘4’: 78 }
    [ 3, 4, 7, 9, 78 ]
    101

    2.全局变量,局部变量

    var d=34
    test(1,2);
    function test(a,b){
        // var a,b
        a=3;    
        console.log(a,b);  //3,2
        var c=12
        console.log(c);//函数内用var修饰的变量,只能在函数内访问,局部变量
        d=78;
        var d=56;//d=56不使用var修饰的就是全局变量
        console.log(d,'-----');
    }
    
    // console.log(c);
    console.log(d,'++++++');//34
    

    第一个打印出a和b的值为“3,2”是因为a在函数内又被赋予了一个值而b不变。

    第二个打印出“12”是因为在函数内定义了一个变量c且赋值为12,但如果在函数外部打印的话将会报错,用var修饰的变量是局部变量只能在函数内访问。

    第三个打印出“56 -----”,是因为即使在函数内定义d为78,但是Var修饰的变量声明会提升,函数声明也会提升,函数声明会提升到最前方,然后是变量声明的提升。

    第四个打印出“34 ++++++”是因为在函数外声明的变量是全局变量。

    3.回调函数

    var test = function(){
        console.log(123);
    }
    useFun(test);
    function useFun(fun){
        var c = 3;
        fun(c);
    }
    useFun(function(a){
        console.log(a)
    })
    

    第一个打印出来为123,第二个打印出来为3
    因为c作为回调函数做数据传递给a。

    function start(){
        return function(){
            return{name:'zhangsan',
                   age:12,
                   sayName:function(){
                       console.log(this.name);
                   }
            }
        }
    }
    start()().sayName();//先赋值再运行
    

    函数可作为参数传递,也可作为返回值。

    展开全文
  • Js中for in 是用来循环遍历对象属性的,但是这个功能是有局限的,所遍历属性必须是对象自定义的属性对象的内置属性无法进行遍历。 当在对象中自定义属性覆盖了内置属性时: IE6/7/8浏览器,for in仍不支持...
  • js对象遍历

    2019-02-01 17:54:07
    由于要看是否遍历对象原型__proto__上的属性,第一步先写构造函数 function Fun(argument) { console.log(arguments) for (var i = 0; i &lt;= arguments.length-1; i++) { this['k' + i] = arguments[i];...
  • js 对象遍历

    2020-02-21 22:10:51
    初学js 对js对象的小结 对象来源于真实的生活。 现实生活中人属于一个对象:有名字、年龄、性别等属性,还可以进行爱好、可以跑、跳等进行一系列动作。 现实生活中车也是一个对象,具有大小,重量,颜色等,还可以...
  • JS对象递归遍历

    千次阅读 2018-11-25 16:46:16
    总所周知,遍历对象属性用for(x in object)。但是,如果遍历对象结构是二叉树,这种方法显然不够用了,所以下需要用递归遍历对象查找数据的方法: var tree = { "id": 0, "name": &...
  • 自身可枚举属性Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成...
  • 刷题-js对象-属性遍历

    2019-09-25 04:44:46
    为了加强js对象的认知,又刷了一题。 直接上题目: 找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1、返回数组,格式为 key: value2、结果数组不要求顺序 示例: //输入 var C =...
  • 遍历对象属性有五种方法,下图为一个场景对比图。可以注意到两点:只有for ... in 才可以遍历原型链属性,且只能遍历可枚举属性。Object.getOwnPropertyNames + Object.getOwnPropertySymbols = Reflect.ownKeys....
  • js属性遍历

    2019-07-28 23:10:12
    找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~) 1、返回数组,格式为 key: value 2、结果数组不要求顺序 示例1 输入 var C = function() {this.foo = 'bar'; this.baz = 'bim';};...
  • 都是以对象的形势;现在我要将属性值提取出来;做成一个二级部门导航栏;abc里面的做一级,asd做二级点击厂一宣示对应的部门;点击厂二时候宣示对应的部门;把原有的隐藏var abc={"a":"一厂","b":"二厂","c":"三厂"}...
  • js for循环 遍历数组 遍历对象属性

    千次阅读 2018-03-19 23:17:45
    1、js for循环 遍历对象属性var person = {fname:"John",lname:"Doe",age:25};for (x in person) { console.log(x + "=" + person[x]);}控制台输出结果:fname=Johnlname=Doeage=...
  • 对象遍历的方法包括:Object.keys()、for-in、Object.getOwnPropertyNames(obj)、Reflect.ownKeys(obj)等方式。 Object.keys()该方法会返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。 ...
  • 需求是要获取一个车型列表,并且输出到页面上按年份排序,故而接口提供的对象简化如下 let obj = { '2018': { modelCode: "204313", modelName: "2018款 Vanquish 6.0L S Coupe" }, '2017': { modelCode: ...
  • 两个因素会影响对象属性遍历: (1)对象属性的属性描述符 (property descriptor) 的 [[Enumerable]] 特性为 true (可枚举)才能被 for-in 访问; (2)如果在对象本身没有找到属性,接下来会在原型链上查找,...
  • JS/jQuery 遍历对象属性

    2019-09-24 05:21:25
    Javascript For/In 循环: 循环遍历对象的属性 var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=txt + person[x];... jQuery jQuery.each() 遍历对象属性 var a...
  • JS 遍历对象 jQuery遍历对象

    千次阅读 2016-03-19 12:43:58
    jquery for 循环遍历对象的属性: //对象的定义如下: var person={id:"1",name:"springok",age:25}; for( p in person){ ...jQuery 中each() 方法遍历对象属性 var person={id:"1",name:"spring
  • js属性遍历

    2020-11-02 19:23:49
    1.1 对象遍历 对象遍历参考文章 var id = Symbol('symbol类型') var obj = { "name":'zs', [id]:'001' } Object.defineProperty(obj,"age",{ value:'18', enumerable:false//age属性设置为不可比案例 }) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,989
精华内容 795
关键字:

js对象属性遍历