该方法可以将类数组对象转换为数组,所谓类数组对象,就是含 length 和索引属性的对象
返回的数组长度取决于对象 length 属性的值,且非索引属性的值,或索引大于 length 的值都不会被返回到数组中
实锤如下
let obj = {
'0': 3,
'1': 13,
'2': 23,
'3': 33,
'length': 3,
'name': 330
}
let arr = Array.prototype.slice.call(obj)
// [3, 13, 23]
简洁写法 [].slice.call(obj)
该方法可以将类数组对象和可迭代对象转换为数组
类数组对象上文已提及,何为可迭代对象?
document.getElementsByTagName("div") 返回的是可迭代对象但不是一个数组
let obj = {
'0': 3,
'1': 13,
'2': 23,
'3': 33
}
function *createIterator(obj){
for(let value in obj){
yield obj[value]
}
}
let iterator = createIterator(obj)
let arr = Array.from(iterator)
// [3, 13, 23, 33]
默认情况下,开发者定义的对象都是不可迭代对象,但如果给 Symbol.iterator 属性添加一个生成器,则可以将其变为可迭代对象
let obj = {
'0': 3,
'1': 13,
'2': 23,
'3': 33
}
obj[Symbol.iterator] = function* () {
for(let value in this){
yield this[value]
}
}
let arr = Array.from(obj)
// [3, 13, 23, 33]
typeof obj[Symbol.iterator] === 'function'
for of 用于循环可迭代对象,包括有 Array, Set, Map, 字符串
而 Array, Set, Map 都有 forEach 方法
另外,NodeList 不是 Array, Set, Map,但是一个可迭代对象,可以用 for of 遍历
此外,用 for of 循环对象时可以通过 break 提前终止,而 forEach 无法提前跳出循环
for in 遍历对象的可枚举属性,包括其原型链上的属性,且不保证顺序
若要遍历对象自身的可枚举属性,使用 hasOwnProperty() 方法来确定属性是否时对象自身属性
Object.getOwnPropertyNames(obj), 返回对象自身可枚举或不可枚举属性
反正已经扯远了,那就再扯远一点, Object.assign() 方法将所有可枚举属性的值从一个或多个源对象复制到目标对象
展开运算符可以将可迭代对象转换为数组
例如,[...'obj'] 返回 ["o", "b", "j"]
字符串去重
[...new Set('objobj')]
默认情况下,开发者定义的对象都是不可迭代对象,但提供了返回迭代器的方法
通过使用这些方法,可以返回相关的数组
与类数组对象需要对象有 length 值不同,Object.values(obj) 返回对象自身可枚举属性值的集合
let obj = {
'0': 3,
'1': 13,
'2': 23,
'3': 33
}
let arr = Object.values(obj) // [3, 13, 23, 33]
在很大程度上,可以将字符串看成字符串数组,
都有 length 属性
都有 concat() / indexOf() / includes() / slice() 方法
不过值得注意的是, string 上没有方法可以原地修改它自身的内容,都是返回新的 string
string 还有个 repeat() 方法,创建指定数量的字符串副本
来源:https://segmentfault.com/a/1190000013579180
JavaScript获取数组中的最大值和最小值:方法一:传统循环遍历,方法二:利用Math.max和Math.min,方式三.利用sort排序...
js数组扁平化就是指将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。 JavaScript方法包括 递归、es5 Array 的reduce函数用法、toString方法、ES6扩展运算符...
JavaScript实现普通数组去重,讲解各种算法的思想和改进方法,已经他们的优缺点...利用数组的reduce方法,使用了filter方法,利用ES6去重,相对来说更为简单
如何快速的创建一个包含100个元素的数组, 最初见到的问题是如何创建100个为元素为0 的数组,研究了一系列的方法,包含Es6 新的API ,不得不说, ES6 好强大!
javascript创建数组的几种方式:1、字面量形式直接创建数组,2、Array构造函数创建数组。js数组常用的方法有哪些:join(),push()和pop(),shift() 和 unshift(),sort(),reverse(),concat()等
every、some、filter、map这几个方法有时候总是傻傻分不清,尤其map,总是一下子有点懵逼记不清和其他方法的区别,每次都需要查一下API,他们的相同点都是需要遍历数组中的每一项,重点是他们的区别.
这篇文章主要介绍了JS实现遍历不规则多维数组的方法,涉及javascript数组递归遍历相关实现与使用技巧,需要的朋友可以参考下
数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组方法、数组删改方法、数组位置方法、数组归并方法和数组迭代方法共10类来进行详细介绍
在前端开发中,相信大家都遇到过数组和字符串相互转换的情况 ,JavaScript提供了split()和join()这2个函数来进行转换,下面就介绍数组对象和字符串的相互转换。
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!