JavaScript_Object.keys() Object.values()

news2025/7/8 11:01:58

目录

一、Object.keys()

二、Object.values()


一、Object.keys()

Object.keys( ) 的 用法 :
作用 :遍历对象 { }
返回结果:返回 对象中 每一项 的 key 值

返回值 :   是一个 *** [ 数 组 ] ***

例子 ( 1 ) :

  <script>
    // 1. 定义一个对象
    var obj = {
      0: '张三',
      1: '李四',
      2: '王五'
    }
    // 2. 使用 Object.keys( ) 方法
    var keyValue = Object.keys(obj)
    // 3. 打印结果
    console.log(keyValue) // 得到是: (3) ['0', '1', '2']
  </script>

例子 ( 2 ) :

  <script>
    var obj2 = {
      'name': 'Jack',
      'age': [18, 20],
      'sex': {
        'man': '男',
        'woman': '女',
        'gender': '保密'
      },
    }
    var keyValue2 = Object.keys(obj2)
    console.log(keyValue2) // 得到是:(3) ['name', 'age', 'sex']
  </script>

我们可以 结合 数组方法 forEach 来搭配使用 : ( 因为 其 返回值 是一个 数组 )
Object.keys ( 要遍历的对象 ) . forEach ( ( item , index ) => { } )


例子 ( 3 ) :

    Object.keys(obj2).forEach(function (key) {
      console.log(key, obj2[key]);
    })

// 得到的是:name --- Jack
//          age --- (2) [18, 20]
//          sex --- {man: '男', woman: '女', gender: '保密'} 


二、Object.values()

Object.values( ) 的 用法 :
作用 :遍历对象 { }
返回结果:返回 对象 中 每一项 的 value 值

返回值 :   是一个 *** [ 数 组 ] ***


参数 :被返回可枚举属性值的 { 对象 }。

返回值 : 一个包含对象自身的所有可枚举属性值的 [ 数组 ] 

Object.values() 返回一个数组,其元素是在对象上找到的可枚举属性值。

属性的顺序与通过手动循环对象的属性值所给出的顺序相同。


返回的数组的内容是传入的对象中 所有键的 值 ,跟对象的 keys 方法刚好是相对的,

因为对象内部的元素是以 键值对 的形式存在的,所以很好理解。

从方法名称的释义也可以大概的知道,英文单词 key 有  的意思,

单词 value 有值、价值的意思,所以方法的作用显而易见。

代码示例 : 

let obj = {
  name: "张三",
  age: 20,
  gender: "男",
};

let arr = Object.values(obj);
console.log(arr); // ['张三', 20, '男']
// 或者
// console.log(Object.values(obj));  执行结果一样
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]

// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']

// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']

// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']

// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']

Polyfill :
如果要 Object.values() 兼容不支持它的旧环境,可在 tc39/proposal-object-values-entries

或 es-shims/Object.values 中找到 Polyfill 。

根据 Object.keys() 的 Polyfill 仿写一个 :

if (!Object.values) Object.values = function(obj) {
    if (obj !== Object(obj))
        throw new TypeError('Object.values called on a non-object');
    var val=[],key;
    for (key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj,key)) {
            val.push(obj[key]);
        }
    }
    return val;
}

项目使用案例 :

需求背景 :  如果对象里面的四条数据都为空 , 那么当前这个对象就不要了 , 删除掉

代码实现 :

方案一(使用 Object.keys 实现),此方法感觉过于冗余了。。

const indexArr = [];
let len = 0;
this.jsonList.map((item, index) => {
  Object.keys(item).forEach((key) => {
    if (item[key] === '') {
      len++;
      if (len === 4) {
        indexArr.unshift(index);
      }
    }
  });
  len = 0;
});
indexArr.forEach((item) => {
  this.jsonList.splice(item, 1);
});

 方案二(使用 Object.values 实现):

for (let i = 0; i < this.jsonList.length; i++) {
  let boo = null;
  boo = Object.values(this.jsonList[i]).every(
    (item) => item === ''
  );
  if (boo) {
    this.jsonList.splice(i, 1);
    i--; // 解决索引塌陷
  }
}

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

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

相关文章

【硬件】P沟道和N沟道MOS管开关电路设计

场效应管做的开关电路一般分为两种&#xff0c;一种是N沟道&#xff0c;另一种是P沟道&#xff0c;如果电路设计中要应用到高端驱动的话&#xff0c;可以采用PMOS来导通。P沟道MOS管开关电路PMOS的特性&#xff0c;Vgs小于一定的值就会导通&#xff0c;当Vgs<0,即Vs>Vg,管…

扬帆优配|高送转+高分红+高增长潜力股揭秘

高送转且高分红的高增加股票&#xff0c;有望跑赢大盘。 此前七连阴的泽宇智能&#xff0c;今日早盘大幅高开。到上午收盘&#xff0c;该股飙涨9.3%&#xff0c;位居涨幅榜前列。音讯面上&#xff0c;3月7日晚间&#xff0c;泽宇智能发表2022年年报&#xff0c;年报显现&#x…

深入学习Spring——笔记

实习之余多学点&#xff0c;希望一个月之内能够完成这个笔记 Spring笔记3-8BeanFactory && ApplicationContextBeanFactoryApplicationContext3-8 BeanFactory && ApplicationContext BeanFactory 首先&#xff0c;从SpringBoot的主启动类来看 SpringBootA…

JMU软件20 UML复习资料

碎碎念 &#xff08;印象中复习资料漏了的知识点&#xff1a;P175&#xff1a;通信图&#xff0c;P168&#xff1a;UML顺序图的图框&#xff0c;都考完了也懒得再整理了&#xff0c;自己翻书看吧&#xff09; 昂&#xff0c;把下面这些都学会大概率不会不及格&#xff0c;要求…

蓝库云|数字化车间建设,是加速制造业数智化转型的关键因素

什么是制造业的数字化车间&#xff0c;对于传统制造业来说这也许是个新词汇&#xff0c;但在企业数字化转型中&#xff0c;数字化车间的存在至关重要&#xff0c;其意思就是将制造业车间里所有的工作流程数字化&#xff0c;实现设备、生产流程、工人等各环节之间的数字化管理与…

SQL注入——时间盲注

目录 一&#xff0c;时间盲注概述 二&#xff0c;关键函数 sleep() if() 三&#xff0c;注入原理 四&#xff0c;实例 一&#xff0c;时间盲注概述 web页面只返回一个正常页面。利用页面响应时间不同&#xff0c;逐个猜解数据。但是前提是数据库会执行命令代码&#xff…

dashboard疏散主机提示报错:无法疏散主机...处理方法、openstack虚拟机状态卡在重启处理方法、openstack在数据库修改虚拟机状态的方法

文章目录dashboard疏散主机提示报错&#xff1a;无法疏散主机...处理方法报错说明【状态卡在reboot状态】解决方法【登录nova数据库修改虚拟机信息】首先获取nova数据库的密码登录nova数据库并做修改验证信息是否修改成功再次迁移并验证报错说明【虚拟机状态error也会导致疏散失…

二叉树的遍历(前序、中序、后序)| C语言

目录 0.写在前面 1.前序遍历 步骤详解 代码实现 2.中序遍历 步骤详解 代码实现 3.后序遍历 步骤详解 代码实现 0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则&#xff0c;对二叉树的每一个节点进行访问&#xff0c;…

QML动画(Animator)

在Qt5.2之后&#xff0c;引入Animator动画元素。这种方式可以直接所用于Qt Quick的场景图形系统&#xff0c;这使得基于Animator元素的动画及时在ui界面线程阻塞的情况下仍然能通过图形系统的渲染线程来工作&#xff0c;比传统的基于对象和属性的Animation元素能带来更好的用户…

CAD如何导入其他图纸的打印设置?CAD打印设置导入步骤

CAD打印设置怎么导入&#xff1f;这个问题相信很多设计师小伙伴在CAD图纸打印过程中都曾想到过&#xff0c;但不知道CAD如何导入其他图纸的打印设置&#xff0c;今天小编就以浩辰CAD软件为例来给大家分享一下CAD打印设置导入的具体操作步骤&#xff0c;一起来看看吧&#xff01…

把第三方sdk放在thinkphp的那个目录

ThinkPHP5.1 如何自动加载第三方SDK&#xff08;非composer包 &#xff09;注意&#xff1a;这里只是针对于非Composer 安装包的自动加载的实现&#xff0c;能用composer安装的自动跳过。由于ThinkPHP5.1 严格遵循PSR-4规范&#xff0c;不再建议手动导入类库文件&#xff0c;所…

应用实战|微信小程序开发示例--多人聊天互动空间

“超能力”数据库&#xff5e;拿来即用&#xff0c;应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库&#xff08;表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维&#xff09;&#xff0c;很大地降低开发者的使用门槛。 本示例是…

[Web]——限流

限流概念&#xff1a;什么是限流呢&#xff1f;限流是限制到达系统的并发请求数量&#xff0c;保证系统能够正常响应部分用户请求&#xff0c;而对于超过限制的流量&#xff0c;则通过拒绝服务的方式保证整体系统的可用性。限流的分类:根据作用范围可以分为单机限流和分布式限流…

Delphi 实现HTML邮件发送

在我们的邮箱里&#xff0c;经常收到HTML格式的邮件。每注册一个网站的时候&#xff0c;总会收到一些他们发来的邮件&#xff0c;打开一后发现和一个网页一样&#xff0c;有图片、链接、文字&#xff0c;甚至有的还有声音和视频和交互。那我们想知道我们怎么才可以给朋友发送这…

【FLY】Java知识点总结

目录认识Java概念图名词解释历史版本基础知识编程规范关键字数据类型运算符数组Stringequals与流程控制引用数据结构常用数据结构HashMapLinkedHashMapWeakHashMapIdentityHashMapEnumMapTreeMapCopyOnWriteArrayList面向对象类反射注解IO异常线程EffectiveJava8JVM运行时数据区…

MXNet的机器翻译实践《编码器-解码器(seq2seq)和注意力机制》

机器翻译就是将一种语言翻译成另外一种语言&#xff0c;输入和输出的长度都是不定长的&#xff0c;所以这里会主要介绍两种应用&#xff0c;编码器-解码器以及注意力机制。编码器是用来分析输入序列&#xff0c;解码器用来生成输出序列。其中在训练时&#xff0c;我们会使用一些…

centos7安装教程

1.点击文件–新建虚拟机 2.根据图片一直下一步或者做一些改动 3. 点击自定义硬件&#xff0c;点击浏览选中下载好的ISO文件 4.配置完成后启动虚拟机 5.选择语言&#xff0c;中英文都可&#xff0c;按需求选择 6.进行设置目标位置&#xff0c;配置分区 7.选择网络和主机名 8.配置…

.net6 web api使用EF Core,根据model类自动生成表

1.安装EF Core和mysql数据库的nuget包 Microsoft.EntityFrameworkCore Pomelo.EntityFrameworkCore.MySql 2.创建models文件夹&#xff0c;在文件夹下创建实体类 public class Users{public int Id { get; set; }[Column(TypeName "varchar(200)"), Required]publ…

Streaming systems 第三章中文

Chapter 3. Watermarks GIthub链接&#xff0c;欢迎志同道合的小伙伴一起翻译 到目前为止&#xff0c;我们一直从pipeline设计者或数据科学家的角度来研究流处理。第二章介绍了水印&#xff0c;对事件时间处理中发生的位置和处理时间中结果何时输出的基本问题做了一部分回答。…

制造企业数字化工厂建设步骤的建议

随着工业4.0、中国制造2025的深度推进&#xff0c;越来越多的制造企业开始迈入智能制造的领域&#xff0c;那数字工厂要从何入手呢&#xff1f; 数字工厂规划的核心&#xff0c;也正是信息域和物理域这两个维度&#xff0c;那就从这两个维度来进行分析&#xff0c;看如何进行数…