Object.values()对象遍历

news/2024/9/26 2:58:40
Object.keys()  对象的遍历
 返回给定对象所有可枚举属性的数组;是属性名组成的数组
let obj = { a: 1, b: 2, c: 3 };Object.keys(obj).map((key) => {console.log(key, obj[key]);});
 
Object.values()  对象的遍历
返回一个给定对象自身的所有属性值的数组; 是属性值组成的数组
    let obj22 = {xe: { name: "小红", age: "19", height: "166" },xe2: { name: "小张", age: "20", height: "176" },xe3: { name: "小洋", age: "21", height: "168" },};const list0 = Object.values(obj22);  // console.log('d', list0)// [ {name: '小红', age: '19', height: '166'},//   {name: '小张', age: '20', height: '176'},//   {name: '小洋', age: '21', height: '168'}]
 
Object.entries()  对象的遍历
Object.entries() 可以把一个对象的键值以数组的形式遍历出来,结果和 for...in 一致,但不会遍历原型属性
const obj = { foo: 'bar', baz: 'abc' }; 
console.log(Object.entries(obj));  // [['foo', 'bar'], ['baz', 'abc']]
let obj3 = { foot:'111', heder:'222' }const list33 = Object.entries(obj3);for (let [k, v] of Object.entries(obj3)) {console.log('值', k +':'+ v)}
 

对象的遍历: for in

let obj2 = { name: "xiaohong", id: "001", age: 19 };for (const key in obj2) {if (Object.hasOwnProperty.call(obj2, key)) {console.log(key, obj2);const element = obj2[key];}}

some()

根据传入的条件有一个符合条件,some ()返回 true。如果没有,它将返回false

const stock = {meat: 5,fruit: 10,cheese: 6,
}
const enoughStock = Object.values(stock).some(el => el >= 6)
console.log(enoughStock) // true

every()

Every ()根据条件返回 true 或 false,如果每一项都符合条件

const nightclub = {dave: 26,sally: 23,lucy: 17,
}
const isOldEnough = Object.values(nightclub).every(el => el >= 18)
// falseif (!isOldEnough) {console.log("Check every ID")
}

检测数组中的每一项是否符合要求

const comp = [{name:"Apple",ram:8},{name:"IBM",ram:4},{name:"Acer",ram:32},
];var result= comp.every(function(computer){return computer.ram > 16
})
console.log(result)//false;

 

map,  filter,  some,  forEach, for in,  for of, 用法
1, forEach
对数组中的每一个元素进行遍历,没有返回值,无法使用break,return等终止循环
let list4 = [1, 2, 3, 4, 5];let other4 = [];list4.forEach((item, i) => {other4.push(item * 2);});

 

2, map
有返回值,返回一个新的数组
let list1 = [1, 2, 3, 4, 5];let other1 = list1.map((item, i) => {return item * 2;});

 

3, filter
有返回值,返回一个符合条件的元素 组成的数组
let list2 = [1, 2, 3, 4, 5];let other2 = list2.filter((item, i) => {return item % 2;});

 

4, some
遍历数组中的每一个元素
 返回一个boolean,判断是否有元素符合条件,如果有一个符合条件,则循环会终止。
let list3 = [1, 2, 3, 4, 5];list3.some((d, i) => {//   console.log('some遍历数组',d, i);return d > 3;});

 

5,reduce()  返回一个值

prev 表示上一次调用返回的结果值,或初始值init
 cur 表示当前的数组元素
 init 表示初始值
// 求和let arr = [3,9,6,2,9]let sum = arr.reduce((prev, cur) => {return prev + cur;}, 0)// init 初始值为0, 所以开始时prev的值为0// 数组去重let newArr = arr.reduce((prev, cur) => {prev.indexOf(cur) == -1 && prev.push(cur)return prev;}, [])

 

6, for of
可遍历数组,获取的是value值;可以代替for循环,用下标索引来获取value值
for of为ES6提供,遍历范围包括数组、Set和Map结构,dom树,arguments对象,以及字符串
   // 遍历数组let list5 = [1, 2, 3, 4, 5];for (let item of list5) {//   console.log('for of',item);
    }let arr3 = [{ key: "01", value: "西施" },{ key: "02", value: "王昭君" },{ key: "03", value: "杨玉环" },{ key: "02", value: "王昭君" },];function newObj(arr) {let newarr = [];for (let i = 0; i < arr.length; i++) {let isBol = newarr.some((item) => item.key == arr[i].key);// 如果找到没有就添加到新数组if (!isBol) {newarr.push(arr[i]);}}return newarr;}console.log("对象", newObj(arr3));

https://blog.csdn.net/sunyctf/article/details/134491546

 

 

 

https://juejin.cn/post/7340554546255003663

https://juejin.cn/post/6967293500572303367?searchId=20240511165914D6D9BC19E90112C71A3A

https://juejin.cn/post/7017968328694038536

https://juejin.cn/post/6844903796062191624?searchId=20240511174205C6448560088235C02833

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/30576.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

浅析OSERDESE3

在高速接口的应用场景下,我们会经常听说SerDes(Serializer-Deserializer)这个词,也就是串行器和解串器,更为通俗的讲就是进行串并转换的。在Xilinx的FPGA中提供了ISERDES(提供串行数据到并行数据的转换)和OSERDES(提供并行数据到串行数据的转换)。在7系列的FPGA里面提供…

玩转AI,笔记本电脑安装属于自己的Llama 3 8B大模型和对话客户端

2024 年 4 月 18 日,Meta**开源**了 Llama 3 大模型,把 AI 的门槛降低到了最低,这是人工智能领域的一个重要飞跃。我们个人也可以部署大模型了,这简直就是给个人开发者发了个大红包!Llama 3 模型有不同的参数版本,本文主要分享我在个人笔记本电脑是部署 8B 参数过程和编写…

ABC353 | 如同流星划过天空

AtCoder Beginner Contest 353 (7/7)ABC353 | 如同流星划过天空 A. & B. 依题意模拟即可。 C. 注意只有 \(f(x,y)\) 需要对 \(10^8\) 取模,\(f\) 的求和不需要。 关注到 \(a_i \in [1,10^8)\),故 \(a_i + a_j \in [2,2 \times 10^8)\)。 从而 \(f(x,y)=[x+y<10^8](x…

代码随想录算法训练营第四天 | 24.两辆交换链表中的节点

23.两两交换链表中的两个节点 题目链接 文章讲解 视频讲解时间复杂度 o(n) 空间复杂度 o(1)tips: 画图,并将每一步操作用伪代码写出来,然后将代码理顺可以避免修改代码的麻烦 初始化的时候就要将previous初始化为current的前一个节点,这样可以保证循环的第一步满足循环要求c…

CSRF(原理)

CSRF是什么?Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概…

XXE漏洞(Pikachu)

原理 要补好多知识~XXE漏洞全称XML External Entity Injection 即XML外部实体注入。 XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害。 XXE漏洞触发…

平均汇总(Power Pivot)

问题:如何在数据透视表中显示类似列总计的平均汇总?解决:在数据模型中添加列Dax公式:=SUMX(区域,区域[数量]*(区域[物料编码]=earlier(区域[物料编码])))/distinctcount(区域[日期 (月)])数据透视表布局: 行字段:物料编码、平均 列字段:组后为月的日期 值字段:数量 其他…

基于webapi的websocket聊天室(三)

上一篇处理了超长消息的问题。我们的应用到目前为止还是单聊天室,这一篇就要处理的多聊天室的问题。 思路第一个问题,怎么访问不同聊天室这个可以采用路由参数来解决。我把路由设计成这样/chat/{room}。访问不同路径就代表进入不同聊天室。第二个问题,怎么创建不同的聊天室原…