js Array All In One
js Array All In One
array 方法,改变原数组(长度),不改变原数组(长度)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
static 方法:
Array.isArray / Array.of / Array.from
property:
length
改变原来 array (原数组长度):
unshift / push / shift / pop / splice / copyWithin / fill
改变原来 array (原数组):
sort / reverse
不改变原来 array长度:
访问器方法: slice / filter / join / concat / includes / indexOf / lastIndexOf / toString / toSource / toLocaleString
& flat / flatMap
迭代器方法: entries / keys / values / every /some / find / findIndex / map / reduce / reduceRight
demos
reverse
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
const log = console.log;
const arr = ['one', 'two', 'three'];
log('\narr =', arr);
// ["one", "two", "three"]
const reversed = arr.reverse();
log('\nreversed =', reversed);
// ["three", "two", "one"]
// ️ Careful: reverse is destructive -- it changes the original array.
// ️ 注意:reverse是破坏性的-它会更改原始数组
log('\nnew arr =', arr);
// ["three", "two", "one"]
splice
splice 改变原数组的长度
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
const log = console.log;
const arr = [1, 2, 3, 4, 5, 6, 7];
let mid = arr.splice(Math.floor(arr.length / 2), 1);
let value = mid[0];
log(`mid arr =`, mid)
log(`mid value =`, value)
log(`new arr =`, arr)
/*
mid arr = [4]
mid value = 4
new arr = (6) [1, 2, 3, 5, 6, 7]
*/
slice
slice 不改变原数组的长度
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
const log = console.log;
const arr = [1, 2, 3, 4, 5, 6, 7];
let mid = arr.slice(Math.floor(arr.length / 2), Math.floor(arr.length / 2) + 1);
let value = mid[0];
log(`mid arr =`, mid)
log(`mid value =`, value)
log(`new arr =`, arr)
/*
mid arr = [4]
mid value = 4
new arr = (7) [1, 2, 3, 4, 5, 6, 7]
*/
of
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of
from
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
reduce
累加器 acc
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
const log = console.log;
const arr = [1, 2, 3, 4, 5, 6, 7];
const sum = arr.reduce((acc, item) => acc+= item, 0);
log(`sum =`, sum);
// sum = 28
flat & flatMap
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// (4) [1, 2, 3, 4]
arr1;
// (3) [1, 2, Array(2)]
const arr = [1, 2, 3, 4];
arr.flatMap(x => [x, x * 2]);
// (8) [1, 2, 2, 4, 3, 6, 4, 8]
arr;
// (4) [1, 2, 3, 4]
const arr = [1, 2, 3, 4];
arr.flatMap(x => [x, x * 2]);
// is equivalent to
arr.reduce((acc, x) => acc.concat([x, x * 2]), []);
// [1, 2, 2, 4, 3, 6, 4, 8]
for loop
for / forEach / for in / for of
for in === Object
for of === array / NodeList / Set / Map ...
for in
Object.hasOwnProperty 过滤从 proto / prototype 上面
继承
的可枚举属性
The for...in statement iterates over all enumerable properties of an object that are keyed by strings (ignoring ones keyed by Symbols), including inherited enumerable properties.
for ... in语句迭代对象的所有可枚举属性(包括继承
的可枚举属性),这些可枚举属性由字符串键入(忽略由Symbol键入的属性)。
for...in 支持 Array
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-10-01
* @modified
*
* @description for...in & Object.hasOwnProperty
* @difficulty Easy Medium Hard
* @complexity O(n)
* @augments
* @example
* @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
* @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
* @solutions
*
* @best_solutions
*
*/
const log = console.log;
const obj = {
a: 1,
b: 2,
};
// obj.prototype.c = 3;
log(`obj.prototype =`, obj.prototype)
// obj.prototype = undefined
obj.__proto__.c = 3;
log(`obj.__proto__ =`, obj.__proto__)
// obj.__proto__ = {}
log(`\n`)
const keys = Object.keys(obj);
for (let i = 0; i < keys.length; i++) {
log(`keys[${i}] =`, obj[keys[i]]);
}
log(`\n`)
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
log(`key =`, obj[key]);
} else {
log(`__proto__ key =`, obj[key]);
}
}
/*
obj.prototype = undefined
obj.__proto__ = { c: 3 }
keys[0] = 1
keys[1] = 2
key = 1
key = 2
*/
const arr = [1, 2, 3, 4, 5, 6, 7];
log(`\n`)
for (const key in arr) {
// for...in & array
log(`index =`, key, arr[key] );
// 包含Object 上,包括原型链上继承的所有可枚举的 string 属性
log(`typeof(item) =`, typeof(item));
// typeof(item) = string
}
/*
index = 0 1
index = 1 2
index = 2 3
index = 3 4
index = 4 5
index = 5 6
index = 6 7
index = c 3
*/
log(`\n`)
for (const item in arr) {
// log(`typeof(item) =`, typeof(item));
// typeof(item) = string
if(item === "3") {
// for...in & break
log(`for...in break =`, item);
break;
} else {
log(`item =`, item);
}
}
/*
item = 0
item = 1
item = 2
for...in break = 3
*/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
for of
The for...of statement creates a loop iterating over iterable objects, including: built-in String, Array, array-like objects (e.g., arguments or NodeList), TypedArray, Map, Set, and user-defined iterables.
for...of 不支持 Object
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2020-10-01
* @modified
*
* @description
* @difficulty Easy Medium Hard
* @complexity O(n)
* @augments
* @example
* @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
* @solutions
*
* @best_solutions
*
*/
const log = console.log;
const obj = {
a: 1,
b: 2,
};
// TypeError: obj is not iterable
// for (const key of obj) {
// // for...of & object
// log(`key =`, obj[key]);
// }
const arr = [1, 2, 3, 4, 5, 6, 7];
log(`\n`)
for (const item of arr) {
// for...of & array
log(`item =`, item);
}
log(`\n`)
for (const item of arr) {
if(item === 3) {
// for...of & break
log(`for...of break =`, item);
break;
} else {
log(`item =`, item);
}
}
/*
item = 1
item = 2
item = 3
item = 4
item = 5
item = 6
item = 7
item = 1
item = 2
for...of break = 3
*/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
forEach
refs
MDN Array
https://img2020.cnblogs.com/blog/740516/202004/740516-20200428000822349-2064140300.png
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
js Array All In One的更多相关文章
- js Array数组的使用
js Array数组的使用 Array是javascript中的一个事先定义好的对象(也可以称作一个类),可以直接使用 创建Array对象 var array=new Array(): 创建指定元 ...
- 从Chrome源码看JS Array的实现
.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line spa ...
- js Array 方法总结
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js & array to string
js & array to string https://stackoverflow.com/questions/13272406/convert-string-with-commas-to- ...
- From Ruby array to JS array in Rails- 'quote'?
From Ruby array to JS array in Rails- 'quote'? <%= raw @location_list.as_json %>
- 解决js array的key不为数字时获取长度的问题
最近写js时碰到了当数组key不为数字时,获取数组的长度为0 的情况. 1.问题场景 var arr = new Array(); arr[‘s1‘] = 1001; console.log(arr. ...
- JS Array.reverse 将数组元素颠倒顺序
<pre><script type="text/javascript"> //JS Array.reverse 将数组元素颠倒顺序//在JavaScript ...
- js Array 中的 map, filter 和 reduce
原文中部分源码来源于:JS Array.reduce 实现 Array.map 和 Array.filter Array 中的高阶函数 ---- map, filter, reduce map() - ...
- js array & unshift === push head
js array & unshift === push head const arr = [1, 2, 3]; console.log(arr.unshift(4, 5)); // 5 con ...
- js Array.from & Array.of All In One
js Array.from & Array.of All In One 数组生成器 Array.from The Array.from() static method creates a ne ...
随机推荐
- 一文打尽 Linux/Windows端口复用实战
出品|MS08067实验室(www.ms08067.com) 本文作者:Spark(Ms08067内网安全小组成员) 定义:端口复用是指不同的应用程序使用相同端口进行通讯. 场景:内网渗透中,搭建隧道 ...
- (转载)微软数据挖掘算法:Microsoft 时序算法之结果预测及其彩票预测(6)
前言 本篇我们将总结的算法为Microsoft时序算法的结果预测值,是上一篇文章微软数据挖掘算法:Microsoft 时序算法(5)的一个总结,上一篇我们已经基于微软案例数据库的销售历史信息表,利用M ...
- SpringMVC听课笔记(二:SpringMVC的 HelloWorld)
1.如何建Maven web项目,请看http://how2j.cn/k/maven/maven-eclipse-web-project/1334.html 2.Maven项目,pom文件中的jar包 ...
- H5 的直播协议和视频监控方案
H5 的直播协议和视频监控方案 一.流媒体主要实现方式 二.流媒体技术 2.1 流媒体 2.2 直播 2.3 流协议 2.3.1 HLS 协议 2.3.2 RTMP 协议 2.3.3 RTSP 协议 ...
- Java——Number类
在平时学习中,当我们需要使用数字的时候,通常使用内置数据类型,如byte,int,long,double等. int i =12; float a = 12.3; 在实际开发中,经常会遇到需要使用对象 ...
- Vagrant基本知识、基本操作
Vagrant基本知识.基本操作 一.介绍 二.安装Vagrant 三.安装到Windows 四.准备Boxes 五.基本操作 六.Vagrant常用命令 七.Vagrantfile 7.1 box ...
- hive-2.2.0 伪分布式环境搭建
一,实验环境: 1, ubuntu server 16.04 2, jdk,1.8 3, hadoop 2.7.4 伪分布式环境或者集群模式 4, apache-hive-2.2.0-bin.tar. ...
- C++类基本--随笔一
#include <iostream> using namespace std; class Teacher { public: Teacher(int m=3,int n=2) { a= ...
- Notepad++ 替换 CRLF 为 LF
对于文件中每一行的结尾符号,Windows 下默认为 CRLF,而 Unix 下默认为 LF. 所以经常会有这样的情况发生:在 Windows 系统下编辑的文件放在 Unix 下不能正常执行,比如 b ...
- AtCoder Beginner Contest 177
比赛链接:https://atcoder.jp/contests/abc177/tasks A - Don't be late #include <bits/stdc++.h> using ...