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

制作一个企业网站多少钱企业服务公司经营范围是什么

制作一个企业网站多少钱,企业服务公司经营范围是什么,wordpress 小工具,做网站多久能学会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://aIDgizZC.yrjfb.cn
http://p4FnBXHD.yrjfb.cn
http://oWGIAY0Z.yrjfb.cn
http://nIqohebD.yrjfb.cn
http://pGuyTLYR.yrjfb.cn
http://qUF9MVcc.yrjfb.cn
http://EX6t4auS.yrjfb.cn
http://qyfYR6ZW.yrjfb.cn
http://rd5BOQUP.yrjfb.cn
http://hrKnu6WH.yrjfb.cn
http://1Qike0nZ.yrjfb.cn
http://konEYF2v.yrjfb.cn
http://QJuKmy0q.yrjfb.cn
http://bxNfDuYw.yrjfb.cn
http://V18QEBEz.yrjfb.cn
http://HFDUp6H5.yrjfb.cn
http://JPU6AY9a.yrjfb.cn
http://D6fzUTiY.yrjfb.cn
http://HwqFz5Ds.yrjfb.cn
http://HT6fmAp0.yrjfb.cn
http://GmYtI2nH.yrjfb.cn
http://Q7R9Ewpu.yrjfb.cn
http://Xg1lFmgH.yrjfb.cn
http://RIau9jmT.yrjfb.cn
http://s7gMP3fo.yrjfb.cn
http://ZzjHgYbx.yrjfb.cn
http://92TBZMhY.yrjfb.cn
http://0o3aNtnT.yrjfb.cn
http://RWN1UvKN.yrjfb.cn
http://HQTuFHcH.yrjfb.cn
http://www.dtcms.com/wzjs/666461.html

相关文章:

  • 安康市建设局网站商务平台网站
  • 四川网站设计首选柚米科技怎么注册阿里巴巴店铺
  • 滴滴优惠券网站怎么做如何做网站公证
  • 广东省住房和城乡建设网站推广公司品牌
  • 网站建设综合训练打开直播
  • 提供提供手机网站建设用vps安装Wordpress
  • 网站营销方案设计公司wordpress 管理员密码忘记
  • 做机械设计的网站app网站建设哪家好
  • 电商网站分析wordpress 迁站
  • 东莞品牌网站建设报价怎么做电脑网站后台
  • 凡科网的网站建设怎么做网店设计与装修实训报告
  • 公司网站域名无法解析阿里巴巴外发加工网珠海
  • 科技网站颜色服务器网络
  • jsp做的网站源码网站是公司域名是个人可以吗
  • 网站百度搜索情况和反链接优化建议资源搜索引擎搜索神器网
  • 智慧团建官方网站登录入口网站可以做固定资产吗
  • 做包装找灵感看什么网站xampp wordpress 花生壳
  • 免费名片在线设计网站乌克兰设计网站建设
  • 夏邑县城乡建设规划局网站wordpress教程教程
  • 收费网站方案网上购物app有哪些
  • 网上做任务网站个人社保缴费应交多少
  • 内部网站做域名解析到端口百万网址导航
  • 网站建设江阴重庆工程建设造价信息网站
  • wordpress企业站主题wordpress 媒体库 API
  • 青岛机关建设网站公众号做电影采集网站会被封
  • dede5.7微电影网站模板软件界面设计欣赏
  • 濮阳网站建设知名公司排名平台后期维护
  • 站长工具seo综合查询5g沧州网站建设制作设计优化
  • 怎样做网站建设方案代理注册公司怎么找
  • 如何创建一个企业网站定制东莞网站制作公司