整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

深入理解 JavaScript 数组方法:从零实现

深入理解 JavaScript 数组方法:从零实现 reverse 方法

家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力

在 JavaScript 中,Array.prototype.reverse 方法用于反转数组中元素的顺序。为了帮助你更好地理解这个方法的内部机制,我们将从零开始实现一个自定义的 reverse 方法,并逐步解析其实现步骤。

手搓 reverse 方法

reverse 方法将数组中元素的顺序从前到后反转。以下是我们自定义实现的 reverse 方法的代码:

Array.prototype.myReverse=function() {
  // 将传入的数组转换为对象
  if (this==null) {
    throw new TypeError('Array.prototype.myReverse called on null or undefined');
  }

  const O=Object(this);
  const len=O.length >>> 0;
  let middle=Math.floor(len / 2);
  let lower=0;
  let upper=len - 1;

  while (lower < middle) {
    // 获取当前元素
    const lowerValue=O[lower];
    const upperValue=O[upper];

    // 交换元素
    O[lower]=upperValue;
    O[upper]=lowerValue;

    // 更新索引
    lower++;
    upper--;
  }

  return O;
};

解析实现步骤

1. 检查数组是否为 nullundefined

确保 this 不为空:

if (this==null) {
  throw new TypeError('Array.prototype.myReverse called on null or undefined');
}

2. 将 this 转换为对象,并获取数组长度

this 转换为对象并获取数组长度:

const O=Object(this);
const len=O.length >>> 0;

3. 初始化左右指针

设置左右指针 lowerupper,以及中间点 middle

let middle=Math.floor(len / 2);
let lower=0;
let upper=len - 1;

4. 交换元素

使用 while 循环交换数组中 lowerupper 指针指向的元素,直到 lower 指针不再小于 middle

while (lower < middle) {
  const lowerValue=O[lower];
  const upperValue=O[upper];

  O[lower]=upperValue;
  O[upper]=lowerValue;

  lower++;
  upper--;
}

5. 返回反转后的数组

返回反转后的数组:

return O;

示例使用

下面是一个示例,展示如何使用自定义的 myReverse 方法:

const arr=[1, 2, 3, 4, 5];
const reversedArr=arr.myReverse();

console.log(reversedArr); // 输出 [5, 4, 3, 2, 1]

在这个示例中,我们使用 myReverse 方法反转了数组元素的顺序。结果返回 [5, 4, 3, 2, 1],这与原生 reverse 方法的行为一致。

实用小技巧:反转数组中的字符串

你可以使用 reverse 方法轻松地反转数组中的字符串。例如,反转数组中的每个字符串元素:

const words=['hello', 'world', 'javascript'];
const reversedWords=words.map(word=> word.split('').reverse().join(''));

console.log(reversedWords); // 输出 ['olleh', 'dlrow', 'tpircsavaj']

通过这种方式,我们可以反转数组中的每个字符串,简化字符串处理过程。

最后

通过实现自定义的 reverse 方法,我们深入理解了 JavaScript 中数组的操作方式。相信你也可以更好地掌握 reverse 方法的内部机制,并提升你的 JavaScript 编程技巧。如果你有任何问题或建议,欢迎在评论区留言交流!祝你编程愉快!

TML5声明与编码设置

HTML5的DOCTYPE声明

<!DOCTYPE html>

语言的声明方式

<html lang="zh-CN">

lang属性设置为zh-CN,表示文件内容使用简体中文

网页编码的声明

<meta charset="GB2312">

<meta charset="UTF-8">



HTML5编号列表新增的属性

<ol type="i" start="4"></ol>

type 设置值有5种

1 默认值。数字有序列表。(1、2、3、4)

a 按字母顺序排列的有序列表,小写。(a、b、c、d)

A 按字母顺序排列的有序列表,大写。(A、B、C、D)

i 罗马字母,小写。(i, ii, iii, iv)

I 罗马字母,大写。(I, II, III, IV)

HTML5新增的属性

start 设定编号的起始值。默认值:start=1

reversed 反向排序,数字改为由大到小(IE9不支持)。设定值reversed


HTML5与HTML4的差异

1.语法简化

HTML,XHTML的DOCTYPE,html,meta,script等标记,在HTML5中有大同谋的简化;

2.统一网页内嵌影音和语法

以前我们在网页中播放影音时,需要使用Active或Plug-in的方式来完成;

3.新增<header>,<foot>,<section>,<article>等语义标记

4.HTML5废除了一些旧的标记

HTML5中已经去除了<font>,<big>,<u>等.

5.全新的表单设计

对于网页程序设计者来说,表彰是最常用的功能,在这方面,HTML5做了很大的更改,不但新增了几项新的标记,原来的<form>标记也增加了许多属性;

6.利用<canvas>标记绘制图形

HTML5新增了具有绘图功能的<canvas>标记,利用它可以搭配Javascript语法在网页上画出线条和图形;

7.提供API开发网页应用程序

为了让网页程序设计者开发网页设计应用程序,HTML5提供了多种API供设计者使用,例如Web SQL Database让设计者可以脱机访问客户端的数据库.



量化评分网站:http://html5test.com HTML5一共555个新特性, 每个小点算一个, 不分权重。

https://caniuse.com/

自哥伦比亚大学的一组研究人员与迈阿密大学米勒医学院的一名同事合作,发现了人类头发因压力而变白、在压力消除后又恢复自然颜色的证据。

这篇论文于5月19日发表在预印版服务器bioRxiv上,题目为“Human Hair Graying is Naturally Reversible and Linked to Stress”,人的头发变白是自然可逆的,并与压力有关。

多年来,传统观点认为,经历压力事件会导致头发变白,比如,历史上有伍子胥遭遇多番变故一夜白头,武侠小说中有练霓裳被心爱之人刺了一剑,悲痛之下一夜白头,成了白发魔女,西方则有断头王后玛丽·安托瓦内特。

一直现在,人们都认为头发变白是不可逆转的。但在最近的这项新研究中,研究人员发现有证据表明,一旦压力事件结束,与压力相关的灰白头发就会恢复自然颜色。

研究人员正在研究黑色素和某些蛋白质在头发自然颜色形成中的作用。他们让14名志愿者拔去他们头上的毛发和身体其他部位的毛发。

研究人员收集了400个头发样本,并用一种新的成像技术检测头发不同部位的色素水平进行分析。他们发现,一些毛发的顶端是灰色的,而不是根部。

头发从根部长出来,因此,研究人员的这一发现表明,头发在某一时刻变白了,之后又恢复了自然颜色的生长。在得到这一发现之后,研究人员联系了同样的14名志愿者,让他们回来回答一些问题。

由于头发以一定的速度生长,研究人员能够计算出一个人的头发开始变白的时间,以及头发恢复自然颜色的时间。他们问志愿者在头发变白的时候或前后是否经历过压力事件,并找到了几个相匹配的事件。

他们还发现,有一个人的头发在度假时恢复了自然颜色。研究人员表示,他们的研究结果表明,压力确实会导致头发变白,消除压力因素可以让头发恢复自然的颜色。他们指出,这种逆转似乎只适用于因压力而变白的头发,而且只有在头发变白后不久才会发生。

今年1月,哈佛大学的一项研究则证明了压力是如何随着时间的推移加速头发变白的过程。干细胞生物学家Ya-Chieh Hsu发现,压力会导致参与“战斗或逃跑”反应的神经释放出一种激素,这种激素会清除用来制造发色素的干细胞。

由于压力被认为是加速衰老的一种形式,这一发现为减缓甚至停止与年龄有关的正常衰老的治疗带来了希望。更重要的是,它可以揭示衰老是如何耗尽全身的干细胞的,或许还能为抗衰老治疗指明方向。

哈佛大学的研究小组通过一系列实验发现了压力对小鼠毛色的影响。在接下来的几天里,这些动物一直处于紧张状态,周一至周五每天被限制四个小时,或者是潮湿的被褥、快速更换照明设备和倾斜笼子。

起初,科学家们怀疑压力会引发免疫系统对头发色素细胞的攻击,但当他们发现没有免疫细胞的小鼠在经历了几次压力后仍然会变白时,就排除了这种可能性。接下来他们研究了皮质醇,一种对压力做出反应的荷尔蒙。这被证明是另一个死胡同:没有皮质醇的小鼠仍然长出了白头发。

研究人员最终在构成交感神经系统的一组神经中找到了罪魁祸首。作为“战斗或逃跑”反应的一部分,准备身体行动的神经进入皮肤的毛囊,并在这里造成伤害。

毛囊中有一个凸起,是干细胞的聚集地。当一根新头发形成时,其中一些干细胞就会转变成色素生成细胞,也就是所谓的黑色素细胞。头发的颜色取决于黑色素细胞产生的吸收光线的黑色素化合物的混合。

试验表明,压力会导致交感神经系统将一种叫做去甲肾上腺素的荷尔蒙泵入毛囊。去甲肾上腺素的突然分泌有一种特别的效果。这种激素能将大量的干细胞转化为黑素细胞,但它们一生成就开始从卵泡中游离并分解。下一次,当毛囊想要长出一根头发时,几乎没有干细胞可以产生新的色素细胞了。所以,头发就变白了。

此外,压力不仅致使头发变白,还与三种类型的脱发有关。第一种是休止期脱发。在休止期,显著的压力将大量的毛囊推入静止期。几个月之内,只是简单地梳头或洗头,头发就会突然脱落。

第二种是拔毛发癖。拔毛癖是一种无法抗拒的冲动,会让人情不自禁地从头皮、眉毛或身体其他部位把毛发拔出来。揪头发可以是一种处理负面或不舒服感觉的方法,比如压力、紧张、孤独、无聊或挫折。

第三种是斑秃。许多因素被认为是导致斑秃的原因,可能包括严重的压力。斑秃时,身体的免疫系统会攻击毛囊,导致脱发。

与压力让头发变白,一旦压力消失头发颜色又会长回来一样,压力和脱发也不一定是永久性的。如果你能控制住自己的压力,你的头发可能会重新长出来。

编译/前瞻经济学人APP资讯组

原文来源:

https://medicalxpress.com/news/2020-06-hair-greying-due-stress-reversed.html

https://www.theguardian.com/science/2020/jan/22/stress-speeds-up-hair-greying-process-science-confirms

https://www.biorxiv.org/content/10.1101/2020.05.18.101964v1