js遍历对象

js你不知的那些基础问题-对象

别来无恙 提交于 2019-11-27 05:02:03
1 属性的删除:delete 命令 delete 命令用于删除对象的属性,删除成功后返回 true 。 var obj = { p: 1 }; Object.keys(obj) // ["p"] delete obj.p // true obj.p // undefined Object.keys(obj) // []    上面代码中, delete 命令删除对象 obj 的 p 属性。删除后,再读取 p 属性就会返回 undefined ,   而且 Object.keys 方法的返回值也不再包括该属性。    注意,删除一个不存在的属性, delete 不报错,而且返回 true 。 var obj = {}; delete obj.p // true    上面代码中,对象 obj 并没有 p 属性,但是 delete 命令照样返回 true 。   因此,不能根据 delete 命令的结果,认定某个属性是存在的。   只有一种情况, delete 命令会返回 false ,那就是该属性存在,且不得删除 var obj = Object.defineProperty({}, 'p', { value: 123, configurable: false }); obj.p // 123 delete obj.p // false    上面代码之中,对象 obj 的 p

遍历js中对象的属性和值

核能气质少年 提交于 2019-11-26 23:34:01
今天优化项目时,遇到了关于”遍历js中对象的属性和值”的需求。之所以会有这个需求,是因为要做一个局部刷新表格内容的js插件。刚开始我去网上荡了一个js分页插件,但是智商实在捉急,搞了半天没搞出来!后来就怒了,干脆自己写一个好了。结果就遇到了这个问题! 问题:通过遍历属性名数组,获取对象的属性值失败 刚开始的错误代码如下: for (var i= 0 ;i<dataList.length;i++) { var dataLine= "<tr>" ; for (var j= 0 ;j<filedList.length;j++){ dataLine+= "<td>" +dataList[i].filedList[j]+ "</td>" ; } dataLine+= "</tr>" ; $( "#" +tableName).append(dataLine); } 首先说一下,dataList里面放的是对象数组;filedList里面放的是对象的属性字段名数组。刚开始是这样想的,遍历dataList,每次都可以拿到一个对象,然后嵌套for循环,遍历filedList,每次拿到它的一个属性值,然后拼凑成表格。 比如:dataList[0]就是一个Emp对象,而Emp里面有id,name等属性。平常我们就可以通过dataList[0].id得到当前Emp对象的id值。但是如果遍历属性字段数组的话

js实现字符串去重和数组去重

女生的网名这么多〃 提交于 2019-11-26 23:00:21
https://blog.csdn.net/charles_tian/article/details/79938010 题目:实现一个函数,去除输入字符串中的重复字符。 题目:实现一个函数,去除输入数组中重复的元素。 我想这道题是大家经常遇见的吧,是不是好像每次遇到的时候又变的不会了?那是因为不够专注,当初学习的时候知识初浅的看了看答案的思路便不再关注了,这肯定不行,要想在程序员的道路上走的更远,必须得明白解这道题的原理和做法,用了哪些你不知道的方法,甚至是还要比较哪个方法更优,明白更优的这个方法的原理出自哪里,这样才能越走越远。 对于这样的题,网上已经有很多的答案了,这里我只是做个总结,多数部分属于转载,但是希望大家坚持看完,因为要着重理解思路和逻辑,这样才对大家有所帮助。 1)字符串去重 1.for遍历 主要思路:首先新建一个空的字符串,然后声明一个flag作为下文的条件判断,随后就开始for循环输入的字符串,在for循环里面给flag赋值为1,然后在for循环又for循环一次,里面的循环是循环新字符串里的字符,然后给出判断,如果相同,flag=0,且跳出循环,最后对flag进行判断,如果为1,表示循环的字符在新字符串里没有出现过,那么就将该字符添加到新字符串中;如果为0,则不进行处理,直接跳过,最后返回新字符串的值。 该方法不是很推荐,因为执行了两次遍历,比较消耗性能

js中常见的几种对象遍历方式Object

喜欢而已 提交于 2019-11-26 09:28:58
一:自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。 这是合理的,因为大多数时候只需要关注对象自身的属性。 来看看一个对象拥有自身和继承属性的例子, Object.keys() 只返回自己的属性键: let simpleColors = { nameA: 'a', nameB: 'b' }; let natureColors = { colorC: 'green', colorD: 'yellow' }; Object.setPrototypeOf(natureColors, simpleColors); Object.keys(natureColors); // => ['colorC', 'colorD'] natureColors['nameA']; // => 'a' natureColors['nameB']; // => 'b' Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。 Object.keys(natureColors) 返回 natureColors 对象的自身可枚举属性键: