JS常用方法汇总顺序
顺序 a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、q、r、s、t、u、v、w、x、y、z
参考资料
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
数组方法
参考资料
https://www.w3school.com.cn/jsref/jsref_obj_array.asp
concat()
concat()
方法通过合并(连接)现有数组来创建一个新数组。
var arr1 = ["Cecilie", "Lone"]; var arr2 = ["Emil", "Tobias", "Linus"]; var arr3 = ["Robin", "Morgan"]; var myChildren = arr1.concat(arr2, arr3); console.log(myChildren); //结果:["Cecilie", "Lone", "Emil", "Tobias", "Linus", "Robin", "Morgan"]
join()
join()
方法也可将所有数组元素结合为一个字符串。它的行为类似 toString(),但是您还可以规定分隔符。
var fruits = ["Banana", "Orange","Apple", "Mango"]; var fruits2 = fruits.join(" * "); console.log(fruits2); // Banana * Orange * Apple * Mango
map()
map()
方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
var arr = [3, 9]; var res = arr.map((x,i)=>({key: 'key'+i, value: x})); console.log(res); //返回 [{key:"key0",value:3},{key:"key1",value:9}]
Math.max()
Math.max()
返回一组数中的的最大值。
var arr = [1, 2, 3]; var max = Math.max(...arr); console.log(max); //返回 3
Object.assign()
Object.assign()
合并两个或多个object。
var obj1 = { a: 1, b: 2 }; var obj2 = { c: 3, d: 4 }; var obj3 = { e: 5, f: 6 }; var obj = Object.assign(obj1, obj2, obj3) console.log(obj); //返回 { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }
pop()
pop()
方法从数组中删除最后一个元素。
var fruits = ["Banana", "Orange","Apple", "Mango"]; var fruits2 = fruits.pop(); console.log(fruits); // Mango console.log(fruits2); // ["Banana", "Orange", "Apple"]
push()
push()
方法(在数组结尾处)向数组添加一个新的元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.push("Kiwi"); console.log(fruits); // ["Banana", "Orange", "Apple", "Mango", "Kiwi"] console.log(fruits2); // 5
reverse()
reverse()
方法反转数组中的元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // 对 fruits 中的元素进行排序 fruits.reverse(); // 反转元素顺序 console.log(fruits); //结果:["Orange", "Mango", "Banana", "Apple"]
shift()
shift()
方法会删除首个数组元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.shift(); console.log(fruits); // ["Orange", "Apple", "Mango"] console.log(fruits2); // Banana
slice()
slice()
方法用数组的某个片段切出新数组。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; var citrus = fruits.slice(1, 3); console.log(citrus); //结果:["Orange", "Lemon"]
注:该方法会从开始参数选取元素,直到结束参数(不包括)为止。
sort()
sort()
方法以字母顺序对数组进行排序。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // 反转元素顺序 console.log(fruits); //结果:["Apple", "Banana", "Mango", "Orange"]
splice()
splice()
方法可用于向数组(添加/删除)元素。
参数说明:
- 第一个参数(2)定义了应添加新元素的位置(拼接)。
- 第二个参数(0)定义应删除多少元素。
- 其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.splice(2, 0, "Lemon", "Kiwi"); console.log(fruits); // ["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"] console.log(fruits2); // []
如果第二个参数为2,则删除2个元素。即 “Apple”, “Mango”
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.splice(2, 2, "Lemon", "Kiwi"); console.log(fruits); // ["Banana", "Orange", "Lemon", "Kiwi"] console.log(fruits2); // ["Apple", "Mango"]
toString()
toString()
方法把数组转换为数组值(逗号分隔)的字符串。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.toString(); console.log(fruits2); // Banana,Orange,Apple,Mango
unshift()
unshift()
方法(在开头)向数组添加新元素。
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var fruits2 = fruits.unshift("Lemon"); console.log(fruits); // ["Lemon", "Banana", "Orange", "Apple", "Mango"] console.log(fruits2); // 5
字符串方法
参考资料
https://www.w3school.com.cn/jsref/jsref_obj_string.asp
indexOf()
indexOf()
方法返回字符串中指定文本首次出现的索引(位置)
var str = "The full name of China is the People's Republic of China."; var pos = str.indexOf("China"); console.log(pos); //结果:17
注:如果未找到文本, indexOf()则返回 -1。
lastIndexOf()
lastIndexOf()
方法返回指定文本在字符串中最后一次出现的索引(位置)
var str = "The full name of China is the People's Republic of China."; var pos = str.lastIndexOf("China"); console.log(pos); //结果:51
replace()
replace()
方法用另一个值替换在字符串中指定的值。
默认地,replace() 只替换首个匹配:
var str = "hello, Tom!"; var res = str.replace("Tom", "Jerry"); console.log(res); //结果:hello, Jerry!
默认地,replace() 对大小写敏感。如需执行大小写不敏感的替换,请使用正则表达式 /i(大小写不敏感):
var str = "hello, Tom!"; var res = str.replace(/TOM/i, "Jerry"); console.log(res); //结果:hello, Jerry!
如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索):
slice()
slice()
提取字符串的某个部分并在新字符串中返回被提取的部分。
该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
var str = "Apple, Banana, Mango"; var res = str.slice(7,13); console.log(res); //结果:Banana
如果省略第二个参数,则该方法将裁剪字符串的剩余部分:
var str = "Apple, Banana, Mango"; var res = str.slice(7); console.log(res); //结果:Banana, Mango
如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索):
var str = "hello, Tom! hello, Jerry!"; var res = str.replace(/hello/g, "hi"); console.log(res); //结果:hi, Tom! hi, Jerry!
split()
split()
将字符串转换为数组。
var txt = "a,b,c,d,e"; var arr = txt.split(","); console.log(arr); //结果:["a", "b", "c", "d", "e"]
substr()
substr() 方法可在字符串中抽取从 开始 下标开始的指定数目的字符。
提示: substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用。
var str="Hello world!"; console.log(str.substr(2,3)); // llo console.log(str.substr(2)); // llo world!
toLowerCase()
toLowerCase()
把字符串转换为小写。
var text1 = "Hello World!"; var text2 = text1.toLowerCase(); console.log(text2); //结果:hello world!
toUpperCase()
toUpperCase()
把字符串转换为大写。
var text1 = "Hello World!"; var text2 = text1.toUpperCase(); console.log(text2); //结果:HELLO WORLD!
Object方法
参考手册
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object
参考地址
https://www.jianshu.com/p/c5aa1eee8dfd
Object 静态方法总结
create
create 创建一个对象
const obj = Object.create({a:1}, {b: {value: 2}}) //第一个参数为对象,对象为函数调用之后返回新对象的原型对象,第二个参数为对象本身的实例方法(默认不能修改,不能枚举) console.log(obj.__proto__.a === 1) // true obj.a = 4; console.log(obj.__proto__.a) // 1 console.log(obj.a) // 4 obj.b = 3; console.log(obj.b) // 2 //创建一个可写的,可枚举的,可配置的属性p obj2 = Object.create({}, { p: { value: 2, // 属性值 writable: true, // 是否可以重写值 enumerable: true, //是否可枚举 configurable: true //是否可以修改以上几项配置 } }); obj2.p = 3; console.log(obj2.p) // 3 // 注意: enumerable 会影响以下 // for…in 遍历包括对象原型上属性 // Object.keys() 只能遍历自身属性 // JSON.stringify 只能序列化自身属性
defineProperty
Object.defineProperty(object, prop, descriptor)定义对象属性
// 添加数据属性 var obj = {}; // 1.添加一个数据属性 Object.defineProperty(obj, "newDataProperty", { value: 101, writable: true, enumerable: true, configurable: true }); console.log(obj.newDataProperty) // 101 // 2.修改数据属性 Object.defineProperty(obj, "newDataProperty", { writable:false }); //添加访问器属性 var obj = {}; Object.defineProperty(obj, "newAccessorProperty", { set: function (x) { this.otherProperty = x; }, get: function () { return this.otherProperty; }, enumerable: true, configurable: true }); //注意: 1.第一个参数必须为对象 // 2.descriptor 不能同时具有 (value 或 writable 特性)(get 或 set 特性)。 // 3.configurable 为false 时,不能重新修改装饰器
数值方法
参考资料
https://www.w3school.com.cn/jsref/jsref_obj_number.asp
NEGATIVE_INFINITY
NEGATIVE_INFINITY
表示负的无穷大(溢出返回)。
var x = Number.NEGATIVE_INFINITY;
Number()
Number()
可用于把 JavaScript 变量转换为数值。
var x1 = true; var x2 = false; var x3 = new Date(); var x4 = "10" var x5 = "10 20" Number(x1); // 返回 1 Number(x2); // 返回 0 Number(x3); // 返回 1621842783539 Number(x4); // 返回 10 Number(x5); // 返回 NaN
注:如果无法转换数字,则返回 NaN
。
parseInt()
parseInt()
函数可解析一个字符串,并返回一个整数。只返回首个数字:
parseInt("10"); // 返回 10 parseInt("10.33"); // 返回 10 parseInt("10 20 30"); // 返回 10 parseInt("10 years"); // 返回 10 parseInt("years 10"); // 返回 NaN
parseFloat()
parseFloat()
函数可解析一个字符串,并返回一个浮点数。只返回首个数字:
parseFloat("10"); // 返回 10 parseFloat("10.33"); // 返回 10.33 parseFloat("10 20 30"); // 返回 10 parseFloat("10 years"); // 返回 10 parseFloat("years 10"); // 返回 NaN
POSITIVE_INFINITY
POSITIVE_INFINITY
表示无穷大(溢出返回)。
var x = Number.POSITIVE_INFINITY;
toExponential()
toExponential()
返回字符串值,它包含已被四舍五入并使用指数计数法的数字。
var x = 9.656; x.toExponential(2); // 返回 9.66e+0 x.toExponential(4); // 返回 9.6560e+0 x.toExponential(6); // 返回 9.656000e+0
toFixed()
toFixed()
返回字符串值,它包含了指定位数小数的数字。
var x = 9.656; x.toFixed(0); // 返回 10 x.toFixed(2); // 返回 9.66 x.toFixed(4); // 返回 9.6560 x.toFixed(6); // 返回 9.656000
toPrecision()
toPrecision()
返回字符串值,它包含了指定长度的数字。
var x = 9.656; x.toPrecision(); // 返回 9.656 x.toPrecision(2); // 返回 9.7 x.toPrecision(4); // 返回 9.656 x.toPrecision(6); // 返回 9.65600
valueOf()
valueOf()
以数值返回数值。
var x = 123; x.valueOf(); // 从变量 x 返回 123 (123).valueOf(); // 从文本 123 返回 123 (100 + 23).valueOf(); // 从表达式 100 + 23 返回 123
运算符
参考资料
https://www.w3school.com.cn/jsref/jsref_operators.asp
typeof
typeof运算符介绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。它返回值是一个字符串,该字符串说明运算数的类型。
console.log(typeof 1); // number console.log(typeof(1)); // number console.log(typeof(NaN)); // number console.log(typeof(Number.MIN_VALUE)); // number console.log(typeof(Infinity)); // number console.log(typeof("123")); // string console.log(typeof(true)); // boolean console.log(typeof(window)); // object console.log(typeof(document)); // object console.log(typeof(null)); // object console.log(typeof(eval)); // function console.log(typeof(Date)); // function console.log(typeof(sss)); // undefined console.log(typeof(undefined)); // undefined
typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。
具体的规则如下:
一、对于数字类型的操作数而言, typeof 返回的值是 number。比如说:typeof(1),返回的值就是number。
上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在
JavaScript中代表的是特殊非数字值,虽然它本身是一个数字类型。
在JavaScript中,特殊的数字类型还有几种:
Infinity 表示无穷大特殊值
NaN 特殊的非数字值
Number.MAX_VALUE 可表示的最大数字
Number.MIN_VALUE 可表示的最小数字(与零最接近)
Number.NaN 特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表 示负无穷大的特殊值
以上特殊类型,在用typeof进行运算进,其结果都将是number。
二、对于字符串类型, typeof 返回的值是 string。比如typeof("123")返回的值是string。
三、对于布尔类型, typeof 返回的值是 boolean 。比如typeof(true)返回的值是boolean。
四、对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。
五、 对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。
六、如 果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。
看完了六条规则,再回头看一下,是不是很简单了……
JavaScript数据类型是非常简洁的,它只定义了6中基本数据类型
- null:空、无。表示不存在,当为对象的属性赋值为null,表示删除该属性
- undefined:未定义。当声明变量却没有赋值时会显示该值。可以为变量赋值为undefined
- number:数值。最原始的数据类型,表达式计算的载体
- string:字符串。最抽象的数据类型,信息传播的载体
- boolean:布尔值。最机械的数据类型,逻辑运算的载体
- object:对象。面向对象的基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了