影子的知识库

影子的知识库

  • 知识库
  • GitHub

›JS 基础

JVM系列

  • JVM内存区域
  • 对象创建-布局-访问
  • 内存溢出实战
  • 内存区域回收
  • 四大引用
  • 垃圾回收算法
  • HotSpot回收算法细节

Java系列

  • java注解
  • springboot请求参数绑定
  • springboot请求参数校验框架
  • YAML语法
  • 动态代理
  • classpath和java命令
  • springboot-aop编程
  • springboot统一异常处理
  • springboot数据库和事务
  • springboot拦截器
  • springboot中的web配置
  • docker的简单开发
  • springboot自动配置
  • 数据库的隔离级别
  • springboot监控
  • java类加载
  • java-agent的相关内容
  • 类加载器详解
  • java的SecurityManager
  • maven学习

Node

    JS 基础

    • 语法基础和数据类型
    • 数据类型转换
    • 语句 表达式 运算符
    • 变量与对象
    • 函数
    • 数据处理
    • 常用 API
    • 重点知识

    ES6

    • 块级作用域
    • 字符串和正则表达式
    • 函数
    • 对象
    • Symbol
    • Set和Map
    • 迭代器和生成器
    • 类
    • 数组
    • Promise

    Node 基础

    • 模块系统
    • package.json
    • 内置对象
    • npm脚本的使用
    • Buffer
    • Stream
    • 事件循环机制
    • 示例代码

    stream系列

    • 流的缓冲
    • 可读流
    • 可写流
    • 双工流和转换流
    • 自定义流

后期计划

  • 学习计划
  • 专题研究计划
Edit

本文内容

本文记录 JavaScript 中一些数据处理的 API

数组

  • 数组可以通过字面量与 new 表达式两种方法生成。我们可以将任意的值或者对象的引用指定为元素,并且不需要确保数组中元素类型的一致性。

  • 在书写数组字面量时,还可以省略一些中间的元素。被省略元素的值将被认为是 undefined 值。例如

    var arr = [3,,5];
    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);
    

    输出如下:

    (py3.5) czp@:~/workspace/knowledge-base/demos/node_start$ node hello.js
    3
    undefined
    5
    
  • ES 标准中,我们可以在数组最后面加上逗号,那个逗号会被忽略。但是在老版本的 js 和 JSON 的数组中,这个会出现问题。(所以能不加还是别加了)

  • 如果在赋值表达式左侧所写的下标超过了元素数量,则会向数组增加新的元素。新增的元素下标值 不必紧接着现有元素的个数。这时,如果访问中间被跳过的元素,则会返回 undefined 值。

    var arr = [3,4,5];
    arr[10] = 7;
    console.log(arr.length);
    console.log(arr);
    

    输出如下:

    (py3.5) czp@:~/workspace/knowledge-base/demos/node_start$ node hello.js
    11
    [ 3, 4, 5, <7 empty items>, 7 ]
    
  • 可以显式地更改 length 的值,在进行改写之后数组的长度也会相应发生改变。如果该值变小,超出部分的元素将被舍去。如果该值变大,新增部分的元素将是 undefined 值

数组 API

Array 类的属性

属性名说明
prototype用于原型链
length值为 1
isArray(arg)如果参数 arg 是一个数组实例则返回真

Array.prototype 对象的属性

属性名说明
constructor对 Array 类对象的一个引用
concat([item0, item1, … ])把参数作为元素加入某一数组并生成新的数组。如果参数本身就是一个数组,则 将这两个数组连接
every(callbackfn[, thisArg])依次对数组中的各个元素应用 callbackfn 函数。在 callbackfn 返回 false 之后终止
filter(callbackfn[, thisArg])依次对数组中的各个元素应用 callbackfn 函数,并返回函数的返回值为 true 的元 素所组成的新的数组
forEach(callbackfn[, thisArg])依次对数组中的各个元素应用 callbackfn 函数
indexOf(searchElement, [fromIndex])返回第一个与 searchElement 一致的元素的下标。也可以通过第 2 参数来设置检 索的起始下标。如果没有找到相符的结果,则返回 -1
join(separator)在数组的元素之间加入分隔符之后生成相应的字符串值
lastIndexOf(searchElement[, fromIndex])从后向前检索,返回第一个与 searchElement 一致的元素的下标。也可以通过第 2 参数来设置检索的起始下标。如果没有找到相符的结果,则返回 -1
map(callbackfn[, thisArg])依次对数组中的各个元素应用 callbackfn 函数,返回元素为函数结果的新的数组
pop()删除数组中最后一个元素后返回该数组
push([item0, item1, …])将参数添加至数组的末尾
reduce(callbackfn[, initialValue])将数组的各个元素与之前的函数调用结果作为参数,依次应用 callbackfn 函数, 并返回函数调用的最终结果
reduceRight(callbackfn[, initialValue])从数组的末尾开始向前执行 reduce 操作
reverse()将数组中的元素逆序置换
shift()删除数组中的第一个元素后返回该数组
slice(start, end)生成一个下标由 start 起至 end 的元素所组成的新的数组
some(callbackfn[, thisArg])依次对数组中的各个元素应用 callbackfn 函数。如果 callbackfn 的结果为 true,则 终止
sort(comparefn)将数组中的元素排序
splice(start, delCount, [item0, item1, …])删除下标由 start 开始的 delCount 个元素。如果指定了第 3 个参数,则将该参数 插入至前述位置
toLocaleString()将数列转换为与地区相关的字符串值类型
toSource()JavaScript 自定义的增强功能。求值结果将返回用于函数进行生成的字符串。
toString()将数组转换为字符串值类型
unshift([item0, item1, …])将元素添加至数组的头部

JSON

JSON 能够通过 4 种基本数据类型以及 2 种结构化数据类型来表示。

4 种基本数据类型是指字符串值型、数值型、布尔型以及 null 型。结构化数据类型是指对象与数组这两种。

注意:JSON 标准中,对象的属性名必须具有双引号

JSON 的标准

数据类型 书写示例 注意点
字符串值"foobar"不能使用单引号。字符串的默认编码为 UTF-8
数值123.4只支持 10 进制书写方式
布尔值true 或是 false
null 值null
对象{ "x":1, "v":"foo" }属性名只能使用字符串的方式表示而不能使用 {x:1} 这样的字面量形式
数组{ 1, 2, "foo" }数组中的元素可以被指定为任意类型的值

JSON 对象

JSON 对象是一种用于原生 JSON 分析的对象,无法对其进行构造函数调用。如果用 Java 中的术语来说,它相当于能够直接使用类方法的工具类。也就是说 JSON 本身就是 JavaScript 中提供的一个内置对象,这个对象提供了一些 JSON 相关的 API。

JSON 对象的属性

属性名说明
parse(text[, reviver])对参数 text 这一 JSON 字符串进行分析之后返回一个 JavaScript 对象。reviver 将会对每个属性调用回调函数,并将返回值赋为属性值
stringify(value[, replacer[, space]])将参数 value 转换为 JSON 字符串。replacer 将会对每个属性调用回调函数,并 将返回值赋为属性值。space 则是输出时的一个缩进字符串

日期处理

Date 类的函数以及构造函数调用

函数或是构造函数说明
Date()返回当前时刻的字符串
new Date([year[, month[, date[, hours[, minutes[, seconds[, ms]]]]]]])返回参数所指定的时刻的 Date 实例
new Date(value)将参数作为 epoch 值并返回相应的 Date 实例
new Date()返回当前时刻的 Date 实例

需要注意的是,和其他一些程序设计语言一样,在 JavaScript 中,month 也是由 0 开始计数的。也就 是说,一个显示为 2012 年 1 月 1 日的 Date 对象应该以下面这样的方式生成。

var dt = new Date(2012,0,1); // 2012 年 1 月 1 日
console.log(dt.toString());

输出:

(py3.5) czp@:~/workspace/knowledge-base/demos/node_start$ node hello.js
Sun Jan 01 2012 00:00:00 GMT+0800 (中国标准时间)

注:这里的时间都是代表着客户端的本地时间

也就是说同样一串代码 var dt = new Date(2012,0,1);,在中国执行,和在美国执行,实际上这两个 date 对象底层对应的绝对时间(或者说是相对于 0 时区的时间戳秒数),是不一样的

Date.prototype 对象的属性

属性名说明
constructor指向 Date 类对象的一个引用
getDate()返回日期的数值。日期从 1 开始计。基于时间
getDay()返回星期几的数值。一个星期从星期日开始计。星期日是 0,星期六是 6。基于 本地时间
getFullYear()返回年的数值。基于本地时间
getHours()返回小时的数值。小时从 0 开始计。基于本地时间
getMilliseconds()返回毫秒的数值。毫秒数从 0 开始计。基于本地时间
getMinutes()返回分的数值。分从 0 开始计。基于本地时间
getMonth()返回月份的数值。月份从 0 开始计。1 月是 0,12 月是 11。基于本地时间
getSeconds()返回秒的数值。秒从 0 开始计。基于本地时间
getTime()返回一个数值形式的时间。即取得当前的 epoch 毫秒值
getTimezoneOffset()返回时区的偏差量。单位是分钟
getUTCDate()返回日期的数值。日期从 1 开始计。基于 UTC 时间
getUTCDay()返回星期几的数值。一个星期从星期日开始计。星期日是 0,星期六是 6。基于 UTC 时间
getUTCFullYear()返回年的数值。基于 UTC 时间
getUTCHours()返回小时的数值。小时从 0 开始计。基于 UTC 时间
getUTCMinutes()返回分的数值。分从 0 开始计。基于 UTC 时间
getUTCMonth()返回月份的数值。月份从 0 开始计。1 月是 0,12 月是 11。基于 UTC 时间
getUTCSeconds()返回秒的数值。秒从 0 开始计。基于 UTC 时间
getUTCMilliseconds()返回毫秒的数值。秒从 0 开始计。基于 UTC 时间
setDate(date)将日期设定为参数指定的值(1-31)。基于本地时间
setFullYear(year[, month[, date]])将年份设定为参数指定的值。基于本地时间
setHours(hour[, min[, sec[, ms]]])将小时设定为参数指定的值。基于本地时间
setMilliseconds(ms)将年毫秒设定为参数指定的值。基于本地时间
setMinutes(min[, sec[, ms]])将分钟设定为参数指定的值。基于本地时间
setMonth(month[, date])将月份设定为参数指定的值(0-11)。基于本地时间
setSeconds(sec[, ms])将秒设定为参数指定的值。基于本地时间
setTime(time)将 epoch 毫秒设定为参数指定的值。基于本地时间
setUTCDate(date)将日期设定为参数指定的值(1-31)。基于 UTC 时间
setUTCFullYear(year[, month[, date]])将年份设定为参数指定的值。基于 UTC 时间
setUTCHours(hour[, min[, sec[, ms]]])将小时设定为参数指定的值。基于 UTC 时间
setUTCMilliseconds(ms)将年毫秒设定为参数指定的值。基于 UTC 时间
setUTCMinutes(min[, sec[, ms]])将分钟设定为参数指定的值。基于 UTC 时间
setUTCMonth(month[, date])将月份设定为参数指定的值(0-11)。基于 UTC 时间
setUTCSeconds(sec[, ms])将秒设定为参数指定的值。基于 UTC 时间
toDateString()将 Date 实例的日期转换为字符串值。基于本地时间
toJSON(key)将 Date 实例转换为 JSON 格式的字符串值
toISOString()将 Date 实例转换为 ISO8601 格式的字符串值
toLocaleDateString()将 Date 实例的日期转换为与地区相关的字符串值。基于本地时间
toLocaleFormat(format)JavaScript 自定义的增强功能。以 format 字符串所指定的格式将日期转换为字符 串。基于本地时间
toLocaleString()将 Date 实例转换为地区相关的字符串。基于本地时间
toLocaleTimeString()将 Date 实例所表示的时刻转换为地区相关的字符串。基于地区相关时刻
toSource()JavaScript 自定义的增强功能。返回用于生成 Date 实例的字符串(即源代码)
toString()将 Date 实例转换为字符串值。基于本地时间
toTimeString()将 Date 实例的时刻转换为字符串值。基于本地时间
toUTCString()将 Date 实例转换为字符串值。基于 UTC 时间
valueOf()将 Date 实例转换为数值。即取得当前的 epoch 毫秒值
Last updated on 11/8/2020
← 函数常用 API →
  • 数组
    • 数组 API
  • JSON
    • JSON 的标准
    • JSON 对象
  • 日期处理
影子的知识库
Docs
Getting Started (or other categories)Guides (or other categories)API Reference (or other categories)
Community
User ShowcaseStack OverflowProject ChatTwitter
More
BlogGitHub
Copyright © 2020 Cen ZhiPeng