热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js教程(3)字符串、数字、日期等内置函数,数组

2019.9.5: 学习内容:字符串、数字、日期等内置函数,数组  一、内置函数 (1)字符函数:获取字符串 str.substr和str.substring : 注意:第一个参数

2019.9.5:

 

学习内容:字符串、数字、日期等内置函数, 数组

 




 
一、内置函数

 


(1)字符函数:

获取字符串 str.substr 和 str.substring :

 

注意:第一个参数的值为负数-6,-6会被转换为0。此时就有 slice(a, b)函数,这个函数当a是负数时,真的就从后面往前查找,而不是忽视它!!

 

获取某一位置的字符,charAt():

 

length就是获取长度。

 

indexOf() 和 lastIndexOf() 方法返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。

这两个方法的不同之处在于,indexOf() 方法是从字符串的开头(位置 0)开始检索字符串,而 lastIndexOf() 方法则是从字符串的结尾开始检索子串。

indexOf是获取从某一位起(某认为0),第一次出现该字符的位置

注意search()方法,搜索特定值的字符串,并返回匹配的位置,例如:

 

但是,search()和indexOf()是不一样的!!search()无法设置第二个开始位置参数,而indexOf()无法用正则表达式

 

有规律的字符串转换为数组:

 

字符串连接 concat:

concat也能作为数组的连接(“”里不需要带,)

 

字符串替换 replace(只替换第一个符合要求的字符串):

 


localeCompare() 

  对字符串进行排序。该方法有一个参数 - 要进行比较的字符串,返回的是下列三个值之一:



  • 如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。

  • 如果 String 对象等于参数中的字符串,返回 0

  • 如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。

注释:如果返回负数,那么最常见的是 -1,不过真正返回的是由实现决定的。如果返回正数,那么同样的,最常见的是 1,不过真正返回的是由实现决定的(这种不确定性导致这个方法不建议使用)。

 

大小写转换。有 4 种方法用于执行大小写转换,即



  • toLowerCase()

  • toLocaleLowerCase()

  • toUpperCase()

  • toLocaleUpperCase()

toLowerCase() 和 toUpperCase() 方法是原始的,toLocaleLowerCase() 和 toLocaleUpperCase() 方法是基于特定的区域实现的(与 localeCompare() 方法相同)。在许多区域中,区域特定的方法都与通用的方法完全相同。不过,有几种语言对 Unicode 大小写转换应用了特定的规则(例如土耳其语),因此必须使用区域特定的方法才能进行正确的转换。

  提示:如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全。


更多字符串方法,参见:https://www.w3school.com.cn/jsref/jsref_obj_string.asp

 



 


(2)日期函数:

产生日期,获取day,month,year:

字符串形式

结果为17,2,2020

注意:

1、js中月份是从0算起,所以月份输出时要加一

2、日期对象是静态的,不随时间改变

3、如果只提供一个参数,则将其视为毫秒。如new Date(2018)   输出会在Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)上增加2018毫秒

4、一位和两位数年份将被解释为 19xx 年

5、一天(24 小时)是 86 400 000 毫秒

6、Javascript(默认情况下)将以全文本字符串格式输出日期:Tue Sep 17 2019 09:43:28 GMT+0800 (中国标准时间)

 

数字形式:

 

  

获取时间差:

 

日期格式化:

 

不同的显示方式:

 

 

 

 



 


(3)数学函数:


  整数(不使用指数或科学计数法)会被精确到 15 位


  小数的最大数是 17 位,但是浮点的算数并不总是 100% 精准:  var x = 0.2 + 0.1;  // x 将是 0.30000000000000004


  使用乘除法有助于解决上面的问题: var x = (0.2 * 10 + 0.1 * 10) / 10;  // x 将是 0.3

 

取整,四舍五入:

 

保留两位小数:(也会四舍五入) 

 

最大值、最小值:如果参数是不能转换成数字的非数字值,则返回NaN

 

绝对值:

 

toExponential() 返回字符串值,它包含已被四舍五入并使用指数计数法的数字。

 

, 参数可选,默认不对数字舍入。

 

toPrecision() 返回字符串值,包含了指定长度的数字。

 

 

 



 


五、数组(类似于py的列表):

1、创建数组:

 

 

 

2、下标超界时返回underfined:

 

3、数组遍历:

ps:也能用arrayObj.foreach() 方法遍历。 (Internet Explorer 8 以及更早的版本不支持 Array.forEach()。)

text = "

    ";
    arrayObj.forEach(myFunction);
    text += "
";

 

4、添加数组元素:

(1)arrayObj.push("new_element")

(2)arrayObj[arrayObj.length] = "new_element"   // 相当于用下标添加元素。更改元素可以通过下标找到并更改值

(3)push() 方法(在数组结尾处)向数组添加一个新的元素

(4)unshift() 方法(在开头)向数组添加新元素,并“反向位移”旧元素。返回时新数组长度。

(5)splice()可用于向数组添加或删除元素:

 

5、删除数组中的某些元素:

  (1)arr.splice(0,1)表示删除数组的第一个,arr.splice(1,2)表示删除从第二个开始,长度为2个的元素。

  (2)pop() 方法从数组中删除最后一个元素

  (3)shift() 方法会删除首个数组元素,并把所有其他元素“位移”到更低的索引。

  (4)delete fruits[0]  通过下标删除对应元素

 

6、合并两个数组:concat() 

 

7、注意:数组不支持名字索引,只能用下标索引!!

  假如您使用命名索引,Javascript 会把数组重定义为标准对象。之后,所有数组的方法和属性将产生非正确结果。

 

8、数组与对象的区别:

9、如何知道这个对象是否数组?

  使用 xxx instanceof Array  判断

 

10、数组(字符串)排序:(找最大和最小值,没有相应方法,只能通过排序来找)

  (1)sort() 方法以字母顺序对数组进行排序

  (2)reverse() 方法反转数组中的元素。先sort(),然后可以使用它以降序对数组进行排序:

 

11、那么数字怎么比值排序呢?

  升序排序:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

  降序排序:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});

 

完整栗子:

  

12、找最大、最小值:

  如果您仅仅需要找到最高或最低值,对整个数组进行排序是效率极低的方法。

  最快的解决方法是使用“自制”方法。此函数遍历数组,用找到的最高值与每个值进行比较

// 查找最大值:
function myArrayMax(arr) {
var len = arr.length
var max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}

// 查找最小值
function myArrayMin(arr) {
var len = arr.length
var min = Infinity;
while (len--) {
if (arr[len] min = arr[len];
}
}
return min;
}

 

13、JS数组里包含对象,对对象(针对数字属性)进行排序:

cars.sort(function(a, b){return a.year - b.year});

 

14、Array.map()   (所有浏览器都支持 Array.map(),除了 Internet Explorer 8 或更早的版本)

  map() 方法通过对每个数组元素执行函数来创建新数组。

  map() 方法不会对没有值的数组元素执行函数。

  map() 方法不会更改原始数组。

  这个例子将每个数组值乘以2:

请注意,该函数有 3 个参数:



  • 项目值

  • 项目索引

  • 数组本身

当回调函数仅使用 value 参数时,可以省略索引和数组参数

// 栗子1:
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
// 栗子2:
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value) {
return value * 2;
}

 

15、Array.filter() 创建一个能通过function过滤的数组

  回调函数不使用 index 和 array 参数,因此可以省略它们。

  所有浏览器都支持 Array.filter(),除了 Internet Explorer 8 或更早的版本

//一个栗子:
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}

 

16、Array.reduce()  :逐个元素运行function

  reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。

  reduce() 方法在数组中从左到右工作。另请参见 reduceRight()。

  reduce() 方法不会减少原始数组。

  reduce() 方法能够接受一个初始值:

这个例子确定数组中所有数字的总和:

// 结果是199:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);
function myFunction(total, value) {
return total + value;
}

 

17、Array.every()  :  逐个元素运行function,判断是否全部通过测试,返回布尔值

// 返回 false:
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value) {
return value > 18;
}

 

18、Array.some()  : 逐个元素运行function,判断是否有一个元素通过测试,返回布尔值




Javascript Array.some()

some() 方法检查某些数组值是否通过了测试。




 

19、Array.find()  : 返回通过测试函数的第一个数组元素的值

// 返回25
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value) {
return value > 18;
}

 

Array.findIndex() : 返回通过测试函数的第一个数组元素的索引

 



推荐阅读
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文深入解析了 JavaScript 中字符串截取的多种方法,并通过实例详细介绍了 `substring()` 和 `slice()` 函数的使用技巧。这些方法在实际开发中非常实用,能够帮助开发者高效地处理字符串数据。此外,文章还探讨了其他相关函数如 `substr()` 的应用场景,为读者提供了全面的参考。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 本文探讨了利用Python编程语言开发自动化脚本来实现文件的全量和增量备份方法。通过详细分析不同备份策略的特点,文章介绍了如何使用Python标准库中的os和shutil模块来高效地管理和执行备份任务。此外,还提供了示例代码和最佳实践,帮助读者快速掌握自动化备份技术,确保数据的安全性和完整性。 ... [详细]
  • 本文详细介绍了 jQuery 的入门知识与实战应用,首先讲解了如何引入 jQuery 库及入口函数的使用方法,为初学者提供了清晰的操作指南。此外,还深入探讨了 jQuery 在实际项目中的多种应用场景,包括 DOM 操作、事件处理和 AJAX 请求等,帮助读者全面掌握 jQuery 的核心功能与技巧。 ... [详细]
  • 在使用 `useSelector` 选择器时,发现分派操作后状态未能实时更新。这可能是由于 React 组件的渲染机制或 Redux 的状态管理问题导致的。建议检查 `useSelector` 的依赖项和 `dispatch` 的调用时机,确保状态变化能够正确触发组件重新渲染。此外,可以考虑使用 `useEffect` 钩子来监听状态变化,以确保及时更新。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
author-avatar
慧萍书群415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有