当前位置: 首页 > wzjs >正文

域名网站打开慢营销推广活动方案

域名网站打开慢,营销推广活动方案,金湖网站制作,海外高延迟服务器做网站Array.from() 是 JavaScript 中一个非常实用的静态方法,用于将类数组对象(array-like objects)或可迭代对象(iterable objects)转换为一个新的数组实例。 核心功能解析: 转换对象类型: 类数组对象 (Array-like Objects): 拥有 l…

Array.from() 是 JavaScript 中一个非常实用的静态方法,用于将类数组对象(array-like objects)或可迭代对象(iterable objects)转换为一个新的数组实例。

核心功能解析:

  1. 转换对象类型:
    • 类数组对象 (Array-like Objects): 拥有 length 属性,并且可以通过数字索引访问元素的对象(如 arguments, NodeList, HTMLCollection, { 0: ‘a’, 1: ‘b’, length: 2 })。
    • 可迭代对象 (Iterable Objects): 实现了 [Symbol.iterator] 方法的对象(如 String, Set, Map, TypedArray, 自定义迭代器对象)。
  2. 语法:
Array.from(arrayLikeOrIterable[, mapFn[, thisArg]])
  • arrayLikeOrIterable:必需。要转换为数组的类数组对象或可迭代对象。
  • mapFn:可选。一个映射函数,新数组的每个元素都会执行该函数。作用类似于 Array.prototype.map()。
  • thisArg:可选。执行 mapFn 函数时使用的 this 值。
  1. 返回值: 一个新的数组实例。

关键特点:

  • 浅拷贝 (Shallow Copy): 如果被转换的对象包含对象引用,新数组包含的是对这些相同对象的引用(不是深拷贝)。
  • 处理稀疏数组: 对于类数组对象中缺失的索引(例如 { length: 3 }),Array.from() 会创建稀疏数组(对应位置为 undefined)。
  • 映射功能: 第二个参数 mapFn 允许在创建数组的同时对每个元素进行转换,避免了先调用 Array.from() 再调用 map() 的额外开销。
  • this 绑定: 第三个参数 thisArg 允许在 mapFn 中指定 this 上下文。

常见应用场景:

  1. 字符串转字符数组:
const str = "hello";
const charArray = Array.from(str);
console.log(charArray); // ['h', 'e', 'l', 'l', 'o']
  1. NodeList / HTMLCollection 转数组 (DOM 操作):
    这是最常见的应用之一,因为 querySelectorAll 等方法返回 NodeList,它没有数组的许多方法(如 map, filter, reduce)。
const divs = document.querySelectorAll('div'); // NodeList
const divArray = Array.from(divs); // 转换为真正的数组// 现在可以使用数组方法
divArray.forEach(div => console.log(div));
divArray.filter(div => div.classList.contains('active'));
  1. arguments 对象转数组:
    在函数内部,arguments 是一个类数组对象。
function sum() {// 旧方法: Array.prototype.slice.call(arguments)const argsArray = Array.from(arguments);return argsArray.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3)); // 6

注意:现代 JavaScript 更推荐使用剩余参数(…args)替代 arguments。

  1. Set 或 Map 的键/值转数组:
    Set 和 Map 都是可迭代对象。
const mySet = new Set([1, 2, 2, 3]); // Set(3) {1, 2, 3}
const setArray = Array.from(mySet);
console.log(setArray); // [1, 2, 3] (去重)const myMap = new Map([['a', 1],['b', 2]
]);
const keysArray = Array.from(myMap.keys()); // ['a', 'b']
const valuesArray = Array.from(myMap.values()); // [1, 2]
const entriesArray = Array.from(myMap); // [['a', 1], ['b', 2]]
  1. 生成数字序列:
    利用 { length: N } 这个类数组对象和 mapFn。
// 生成 [0, 1, 2, 3, 4]
const sequence1 = Array.from({ length: 5 }, (_, index) => index);
console.log(sequence1); // [0, 1, 2, 3, 4]// 生成 [1, 2, 3, 4, 5]
const sequence2 = Array.from({ length: 5 }, (_, index) => index + 1);
console.log(sequence2); // [1, 2, 3, 4, 5]// 生成 [2, 4, 6, 8, 10]
const doubles = Array.from({ length: 5 }, (_, index) => (index + 1) * 2);
console.log(doubles); // [2, 4, 6, 8, 10]

这比传统的 for 循环或 Array(n).fill().map() 更简洁。

  1. 处理具有非标准键名的类数组对象:
    只要对象有 length 属性和按数字索引访问元素的能力。
const arrayLike = {'0': 'zero','1': 'one','2': 'two','name': 'My Array-Like', // 非数字属性会被忽略length: 3
};
const realArray = Array.from(arrayLike);
console.log(realArray); // ['zero', 'one', 'two']

注意事项:

  1. 兼容性: Array.from() 是 ES6 (ES2015) 引入的方法。现代浏览器和 Node.js 环境普遍支持。如果需要支持非常老的浏览器(如 IE11),需要使用 polyfill(例如 Babel 提供的)或替代方法(如 Array.prototype.slice.call(arrayLike))。
  2. length 属性是关键: 对于类数组对象,必须有 length 属性,且其值应为非负整数。Array.from() 会读取这个 length 值来确定新数组的长度。
  3. 非索引属性: 类数组对象中的非数字索引属性(如上面的 name: ‘My Array-Like’)在转换过程中会被忽略。
  4. 稀疏处理: 如果类数组对象的索引不连续(稀疏),新数组对应的位置将是 undefined。

总结:

Array.from() 是 JavaScript 中处理类数组和可迭代对象转换的强大工具。它的核心价值在于:

  1. 将类数组/可迭代对象安全、方便地转换为真正的数组,从而解锁所有数组方法(map, filter, reduce, forEach 等)。
  2. 提供内置的映射功能,允许在转换过程中直接修改元素。
  3. 简洁地生成数值序列。

熟练掌握 Array.from() 能显著提高处理 DOM 集合(NodeList)、函数参数(arguments)、集合类型(Set, Map)、字符串以及创建特定序列数组的效率和代码可读性。

http://www.dtcms.com/wzjs/25561.html

相关文章:

  • 怎么提高网站seo优化关键字排名全网关键词优化公司哪家好
  • 如何做漫画网站宣传推广方案模板
  • 网站恶意刷新常州百度关键词优化
  • 爱站云网站建设heikw郑州网络推广排名
  • 微信网页宣传网站怎么做的有什么功能
  • 高级程序员培训谷歌搜索引擎优化seo
  • 信访举报网站建设建议友情链接购买
  • 云南网站建设优化企业查询官网入口
  • 网站方案策划书百度竞价优化
  • 如何搭建网站赚钱搜索关键词排行榜
  • 网站做外链的技巧友情链接有哪些
  • 移动端网站开发流程百度关键词关键词大全
  • 中国做的比较好的网站设计公司有哪些深圳货拉拉
  • 马家堡做网站的公司电脑优化软件哪个好用
  • 小企业网站建设源代码电子营销主要做什么
  • 福田的网站建设公司seo实战密码第四版pdf
  • 网站建设公司上海做网站公司排名如何提高网站的自然排名
  • asp.net网站开发是什么网站制作工具有哪些
  • 网站开发心得百度推送
  • 网站建设客户常见问题集锦1688关键词排名查询工具
  • 那个网站是做房产中介的网络培训研修总结
  • 赤峰做网站的小学生收集的新闻10条
  • 网站界面设计规范营销互联网推广公司
  • 做家装家居网站北京seo公司网站
  • 商城网站建设包括哪些郑州seo技术服务顾问
  • 四川省铁路建设有限公司网站搜狐新闻手机网
  • 织梦做商城网站网络推广学校
  • 儿童学做彩泥的网站免费获客软件
  • 扬中网站推广哪家好关键词检索怎么弄
  • 乐山电商网站开发基本营销策略有哪些