热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ES6】对象、数组、字符串常用API

♡‧₊˚对象API拓展‧₊˚♡is比较两个数是否相等返回值:truefalseconsole.log(Object.is(1,-1));falseconsole.

 ♡ ‧₊˚ 对象API拓展‧₊˚ ♡


         is 

 比较两个数是否相等 返回值:true/false

console.log(Object.is(+1,-1)); // false
console.log(Object.is(+0,-0)); // false
console.log(+0===-0); // true
console.log(NaN===NaN); // false
console.log(Object.is(NaN,NaN)); // true

        assign  


  • 两个参数时(复制对象,被复制对象):复制/拷贝,返回值是第一个参数

// 把第二个参数复制给第一个参数
let res = Object.assign(obj,obj1);
console.log(res, obj); //{ name: 'zzy', age: 17 } { name: 'zzy', age: 17 }
console.log(res===obj); // true

  • 三个参数是合并对象,(合并对象1,合并对象2,合并对象3),返回值是第一个参数

let obj2 = {};
let obj3 = {name:"fhj"}
let obj4 = {gender:"female"};
let res1 = Object.assign(obj2,obj3,obj4);
console.log(res1, obj2); // { name: 'fhj', gender: 'female' } { name: 'fhj', gender: 'female' }

.获取原型对象的方法

let obj5 = {name:"xiao"};console.log(obj5.__proto__); // [Object: null prototype] {}console.log(obj5.constructor.prototype);  // [Object: null prototype] {}console.log(Object.getPrototypeOf(obj5)); // [Object: null prototype] {}

设置原型对象中的方法

Object.setPrototypeOf(obj,obj1) // 将obj的原型对象设置为obj1console.log(obj.__proto__); // { name: 'zzy', age: 17, class: { number: '222' } }console.log(obj.constructor.prototype);  // [Object: null prototype] {}console.log(Object.getPrototypeOf(obj));  // { name: 'zzy', age: 17, class: { number: '222' } }

 


Object.keys()  | Object.values()   | Object.entries() 

console.log(Object.keys(obj),"返回键值组成的数组"); // [ 'name', 'age', 'class' ] 返回键值组成的数组
console.log(Object.values(obj),"返回值组成的数组"); // [ 'ts', 17, { number: '222' } ] 返回值组成的数组
console.log(Object.entries(obj),"返回键值对组成的数组"); // [ [ 'name', 'ts' ], [ 'age', 17 ], [ 'class', { number: '222' } ] ] 返回键值对组成的数组

fromEntries()

用于把二维数组还原成对象

console.log(Object.fromEntries(Object.entries(obj)));
// { name: 'ts', age: 17, class: { number: '222' } }


 ♡ ‧₊˚ 数组API拓展‧₊˚ ♡


Array.from();

将类数组对象转换为数组

console.log(Array.from("hello")); // [ 'h', 'e', 'l', 'l', 'o' ]

Array.of();

创建数组实例

let a = Array.of(10, "hello");console.log(a); // [ 10, 'hello' ]

Array.prototype.find((item)=>{})

 find方法返回第一个满足条件的元素或者undefined, 参数是回调函数

var arr = [1, 2, 3, 4, 5];let res = arr.find((item, index, arr) => {return item > 3; });console.log(res); // 4 (元素)

Array.prototype.findIndex();

返回第一个满足条件的元素的索引或者-1, 参数是回调函数

var arr = [1, 2, 3, 4, 5];
let res1 = arr.findIndex((item, index, arr) => {return item > 4;});
console.log(res1); // 4 (索引)

Array.prototype.includes();

includes是否包含某个元素,返回true/false

var arr = [1, 2, 3, 4, 5];
console.log(arr.includes(300)); // false

Array.prototype.fill()

用来填充数组,修改原数组

var arr = [1, 2, 3, 4, 5];
arr.fill(8); //参数 返回值 修改原数组
console.log(arr); // [ 8, 8, 8, 8, 8 ]

flat()

数组扁平化

var arr1 = [1,2,[3,[4],5],6,7,8]console.log(arr1.flat(2)); // 参数为层级深度参数(默认为1)


flatMap()  

flat + map   通过对map调整后的数据尝试展平操作

var arr2 = [1,2,3,[4,5,6]]
// 需求:将数组中的每个元素展平再乘以2
let b = arr2.flatMap((item)=>{if(typeof item==='number'){return item*2;}else{return item.map(item=>{return item*2;})}
})
console.log(b); // [ 2, 4, 6, 8, 10, 12 ]

 


 ♡ ‧₊˚ 字符串API拓展‧₊˚ ♡


trimStart()

去除前面的空格

let str = " Taylor Swift ";
console.log(str + '22');
console.log(str.trimStart());

 


trimEnd()

去除后面的空格

let str = " Taylor Swift ";
console.log(str + '22');
console.log(str.trimEnd() + '22');

 


padStart padEnd 

填充字符串,  参数(填充完的字符串长度,填充的字符串)

如果没有第二个参数,则自动用空格填充

let str = " Taylor Swift ";
console.log(str.padStart(15)); // Taylor Swift
console.log(str.padEnd(20,'Alison')); // Taylor Swift Alison

replace()

替换

let str1 = '111222333';
// 将1替换成x
console.log(str1.replace('1','x'));
// 用正则表达式开启g模式全局替换
console.log(str1.replace(/1/g,'x'));


推荐阅读
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • async/await 是现代 JavaScript 中非常强大的异步编程工具,可以极大地简化异步代码的编写。本文将详细介绍 async 和 await 的用法及其背后的原理。 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
author-avatar
allenn2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有