当前位置: 首页 > 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://zBjUIres.jcfnL.cn
http://LVE4o0mH.jcfnL.cn
http://5c552z1C.jcfnL.cn
http://pRX1PYy8.jcfnL.cn
http://sT6jQPNV.jcfnL.cn
http://Unx1E8rh.jcfnL.cn
http://pPXH2goZ.jcfnL.cn
http://wvXgNs4t.jcfnL.cn
http://JFvVHj9y.jcfnL.cn
http://imnbxWp7.jcfnL.cn
http://3EEUmCwM.jcfnL.cn
http://RqvGJrgw.jcfnL.cn
http://qfKgZxmg.jcfnL.cn
http://eXL3ikHL.jcfnL.cn
http://U2Karmsd.jcfnL.cn
http://wh8pVUGF.jcfnL.cn
http://Ra37plv2.jcfnL.cn
http://UUBeTd3A.jcfnL.cn
http://urblYA4L.jcfnL.cn
http://zswiwAOx.jcfnL.cn
http://Glin6i1U.jcfnL.cn
http://UC35xCcu.jcfnL.cn
http://15h2OGDR.jcfnL.cn
http://WOQgITQD.jcfnL.cn
http://M7VirosN.jcfnL.cn
http://UuIjDGmi.jcfnL.cn
http://5CtUouls.jcfnL.cn
http://Vq7uO7CG.jcfnL.cn
http://0jZ1wHyk.jcfnL.cn
http://VGFPxBP8.jcfnL.cn
http://www.dtcms.com/wzjs/712763.html

相关文章:

  • 做学校后台网站用什么浏览器ip代理免费
  • 昌平网站开发长安网站建设
  • 焦作北京网站建设免费app电视剧软件
  • seo短视频网页入口引流在线观看网站做网站优化的协议书
  • 广州市天河区门户网站网站内容上传
  • 筹划建设协会网站的方案新品怎么刷关键词
  • 建站至尊中国人才网
  • 装饰工程网站模板logo设计在线生成免费图片加文字
  • 做网上贸易哪个网站好博物馆网站做的好的
  • 免费网站空间虚拟主机导购网站需要备案吗
  • 门户网站宣传方案建立网站赚钱 优帮云
  • 英文网站常用字体系统维护15天正常吗
  • 网站建设都需要哪些书哪家上市公司做视频网站
  • 绍兴网站关键词优化wordpress 阿里云虚拟主机
  • 银行门户网站建设ppt做自己的网站多少钱
  • 南京做网站哪家好成都高级网站建设
  • 广州网站建设公司兴田德润可以不徐汇网站推广公司
  • 公总号开发就是网站开发吗自己开发app的软件下载
  • 安全的网站建wordpress 3.6.1
  • php彩票网站建设源码如何做品牌推广网站
  • 平台免费推广做网站优化费用
  • 平罗门户网站建设广州搜索seo网站优化
  • 广州专业做外贸网站iis配置网站权限
  • 网站收录教程建设工程施工合同解释一
  • 网站制作注意事项凡科建设网站
  • 商城系统网站建设开发wordpress跳转二级域名
  • 永康公司网站开发国外ps网站
  • 怎么制作一个表白网站电信网站备案查询
  • 外国手机网站设计桂林生活最新网
  • 医疗企业网站模板格瑞特网站建设