首页 > 其他分享 >Object.values()对象遍历

Object.values()对象遍历

时间:2024-05-12 14:53:54浏览次数:14  
标签:遍历 console key Object values 数组 let

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)
// false

if (!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

 

标签:遍历,console,key,Object,values,数组,let
From: https://www.cnblogs.com/yizhilin/p/18187819

相关文章

  • 目录遍历(Pikachu)
    原理Web安全-目录遍历漏洞_百度搜索文件遍历漏洞-CSDN博客防御1.对用户的输入进行验证,特别是路径替代字符如“../”和“~/”。2.尽可能采用白名单的形式,验证所有的输入。3.合理配置Web服务器的目录权限。4.当程序出错时,不要显示内部相关配置细节。5.对用户传过来的文件名......
  • js 遍历数组取出字符串用逗号拼接
    var arr=[{"name":"hhh"},{"name":"dddd"}] //用jsfunction getTextByJs(){    var str= "";    for (var i=0;i<arr.length;i++){        str+=arr[i].name+ ",";    }    //去掉最后一个逗号(如......
  • 比较 Swift 中的闭包和 Objective-C 中的 Block
    在iOS开发中,闭包(Swift)和Block(Objective-C)都是用于实现匿名函数的重要概念。它们在很多方面都有相似之处,但也存在一些显著的差异。本文将从应用和原理两个层面对Swift中的闭包和Objective-C中的Block进行比较和分析。1.应用层面的比较1.1相似之处功能性相同:闭包和......
  • 理解 Swift 中闭包与 Objective-C 中 Block 的外部变量捕获机制
    在Swift中的闭包和Objective-C中的Block都支持捕获外部变量,使得在闭包或Block内部可以访问外部作用域的变量。本文将深入探讨它们在捕获外部变量方面的机制和区别。1.Swift中闭包的外部变量捕获机制在Swift中,闭包捕获外部变量时会根据情况选择采用值捕获(Captureby......
  • ubuntu22 python2 pyinstaller 打包报错:'NoneType' object has no attribute 'groups'
    前言最近有个需求,需要在ubnutu22上使用pyinstaller打包一个python2的文件。中间遇到了一些问题:pip2installpyinstaller报错解决方案:pip2installpyinstaller==3.6python2和python3的pyinstaller如何同时存在,我想把python2的pyinstaller命名为pyin......
  • 问文心一言——C# 遍历datagridview单元格 不用嵌套循环
    问:C#遍历datagridview单元格不用嵌套循环答:在C#中遍历DataGridView的单元格通常意味着你需要遍历行(Rows)并在每行中遍历单元格(Cells)。然而,如果你想要避免嵌套循环的“感觉”,你可以使用LINQ(LanguageIntegratedQuery)或者一个简单的foreach循环配合委托或Lambda表达式来“扁平化......
  • P3916 图的遍历
    题面:链接:https://www.luogu.com.cn/problem/P3916思路:反向遍历图啊卡了好久,如果正序来的话还得考虑环和先后次序的问题代码:#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<string.h>......
  • NodeJS路径遍历:示例及预防
    让我们来看看什么是路径遍历攻击,以及在Node.js中可以采用哪些方法来阻止这种攻击。构建一个安全而健壮的应用程序需要考虑的因素很多,并非一件容易的事情。要确保覆盖所有潜在的漏洞是一项十分艰巨的任务,这需要大量的经验和指导。在这些漏洞中,有一个和系统目录访问安全相......
  • 关于单向不循环链表的创建、插入、删除、遍历、检索
    关于单向不循环链表的创建、插入、删除、遍历、检索单向不循环链表公式初始化单向不循环链表构建单向不循环链表结构体//创建结构体类型typedefstructone_way_node{//数据域chardata[DATA_LEN];//指针域structone_way_node*next;}ONE_WAY_NOD......
  • [Paper Reading] OFT Orthographic Feature Transform for Monocular 3D Object Detec
    OFTOrthographicFeatureTransformforMonocular3DObjectDetectionOFTOrthographicFeatureTransformforMonocular3DObjectDetection时间:18.11机构:UniversityofCambridgeTL;DR当时纯视觉自动驾驶方案效果上仅达到Lidar方案有10%的水平,本文claim部分差距源于pe......