需求情景一:

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<script>
// 需求如下,我們需要使用result的屬性對應值,同時修改部分屬性的屬性名
// 使用ObjA和resultult共有屬性+ObjB和result共有屬性
// 去掉result中無用屬性
const result = {
need1: '這個屬性值是有用的1',
need2: '這個屬性值是有用的2',
need3: '這個屬性值是有用的3',
need4: '這個屬性值是有用的4',
need5: '這個屬性值是有用的5',
need61: '這個屬性值是有用的6,屬性名需要修改成need6',
need71: '這個屬性值是有用的7,屬性值需要修改成need7',
need81: '這個屬性值是有用的8,屬性值需要修改成need8',
need91: '這個屬性值是有用的9,屬性值需要修改成need9',
other1: '這個屬性沒什麼用',
other2: '這個屬性沒什麼用',
}
const ObjA = {
need1: '這個屬性是有用的1',
need2: '這個屬性是有用的2',
need3: '這個屬性是有用的3',
need4: '這個屬性是有用的4',
need5: '這個屬性是有用的5',
unwanted1: '不需要這個屬性1',
unwanted2: '不需要這個屬性2',
unwanted3: '不需要這個屬性3',
}
// 此函數用來對照修改Rresult對象的屬性
const ObjB = {
need61: 'need6',
need71: 'need7',
need81: 'need8',
need91: 'need9',
}
// 現在有下面三種實現方法,我們來做一下對比~
let resultArr1 = []
let resultArr2 = []
let resultArr3 = []
Object.keys(result).forEach(_ => {
if (ObjA[_] || ObjB.hasOwnProperty(_)) {
resultArr1.push((ObjB[_] ? ObjB[_] : _) + ':' + (result[_] || ''))
}
})
resultArr2 = Object.keys(result).map(_ => {
if (ObjA[_] || ObjB.hasOwnProperty(_)) {
return (ObjB[_] ? ObjB[_] : _) + ':' + (result[_] || '')
}
}).filter(_ => _)
Object.keys(result).reduce((init, _) => {
if (ObjA[_] || ObjB.hasOwnProperty(_)) {
init.push((ObjB[_] ? ObjB[_] : _) + ':' + (result[_] || ''))
}
return init
}, resultArr3)
console.log('resultArr1', resultArr1)
console.log('resultArr2', resultArr2)
console.log('resultArr3', resultArr3)
// 0: "need1:這個屬性是有用的1"
// 1: "need2:這個屬性是有用的2"
// 2: "need3:這個屬性是有用的3"
// 3: "need4:這個屬性是有用的4"
// 4: "need5:這個屬性是有用的5"
// 5: "need6:這個屬性是有用的6,屬性名需要修改成need6"
// 6: "need7:這個屬性是有用的7,屬性值需要修改成need7"
// 7: "need8:這個屬性是有用的8,屬性值需要修改成need8"
// 8: "need9:這個屬性是有用的9,屬性值需要修改成need9"
</script>
</body> </html>

日常JS数据各种操作方法总结~~欢迎大家留言板补充哦~~的更多相关文章

  1. 11、js 数组详细操作方法及解析合集

    js 数组详细操作方法及解析合集 前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易 ...

  2. 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)

    背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...

  3. JS 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  4. js数组常用操作方法小结(增加,删除,合并,分割等)

    本文实例总结了js数组常用操作方法.分享给大家供大家参考,具体如下: var arr = [1, 2, 3, 4, 5]; //删除并返回数组中第一个元素 var theFirst = arr.shi ...

  5. JS数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  6. scroll pagination.js数据重复加载、分页问题

    scroll pagination.js数据重复加载.分页问题 解决办法 参考资料: http://blog.csdn.net/dyw442500150/article/details/1753242 ...

  7. post/get in console of JSarray/js 数组详细操作方法及解析合集

    https://juejin.im/post/5b0903b26fb9a07a9d70c7e0[ js 数组详细操作方法及解析合集 js array and for each https://blog ...

  8. template.js 数据渲染引擎

    template.js 数据渲染引擎 template.js是一款JavaScript模板引擎,用来渲染页面的. 原理:提前将Html代码放进编写模板 <script id="tpl& ...

  9. m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中

    m_Orchestrate learning system---三十五.php数据和js数据的解耦:php数据(php代码)不要放到js代码中 一.总结 一句话总结:也就是以html为中介,用html ...

  10. Knockout.js 数据验证之插件版和无插件版

    本文我们将介绍使用 Knockout.js 实现一些基本的数据验证.就如我们在标题里提到的,我们会使用两种方法来创建数据验证方法. 使用自定义方法,不需要任何插件 最简单的方法是使用已有的插件 如果你 ...

随机推荐

  1. 基于FPGA的AES加解密IP

    Programmable AES Encryption/ Decryption IP 可编程AES加解密IP 可编程AES加解密IP提供了加解密算法功能,兼容美国国家标准与技术研究院(NIST)发布的 ...

  2. Java多线程-ThreadPool线程池-2(四)

    线程池是个神器,用得好会非常地方便.本来觉得线程池的构造器有些复杂,即使讲清楚了对今后的用处可能也不太大,因为有一些Java定义好的线程池可以直接使用.但是(凡事总有个但是),还是觉得讲一讲可能跟有助 ...

  3. Android10 dex2oat实践

    最近看到一篇博客:Android性能优化之Android 10+ dex2oat实践,对这个优化很感兴趣,打算研究研究能否接入到项目中.不过该博客只讲述了思路,没有给完整源码.本项目参考该博客的思路, ...

  4. Arch Linux + KDE 配置&美化(持续更新~)

    Arch Linux + KDE 配置&美化(持续更新~) 这篇文章着重记录archlinux + KDE的一个基本的配置过程.不包括安装过程(使用archInstall.sh).内容大概有以 ...

  5. echarts标题(title)配置

    var option = {         //标题         title : {             show:true,//显示策略,默认值true,可选为:true(显示) | fa ...

  6. 😊SpringBoot 整合 Elasticsearch (超详细).md

    SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...

  7. Quartz的使用

    Quartz的使用 可以下载该项目进行测试查看:https://gitee.com/zhou-jiahao/quartz_demoq 1 初始Quartz 如果你的定时任务没有分布式需求,但需要对任务 ...

  8. 【DL论文精读笔记】 深度压缩

    深度压缩 DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFM ...

  9. layui文件上传

    //前端代码 <div class="layui-form-item"> <label class="layui-form-label"> ...

  10. c3 linearization详解

    MRO MRO 全称方法解析顺序(Method Resolution Order),在多重继承和多继承存在的时候,寻找属性及方法的顺序. 深度优先(DFS)与广度优先(BFS) python2 所用的 ...