最近项目中用到了不少引用数据类型的方法,来总结一下吧!

336 阅读9分钟

一、object的方法

1.Object.is() 是一种判断两个值是否相同的方法。

语法:Object.is(value1, value2);

参数:value1:要比较的第一个值。value2:要比较的第二个值。

返回值:一个布尔表达式,指示两个参数是否具有相同的值。

Object.is(1,1)//true
Object.is(1,2)//false
Object.is({a:1,b:2},{a:1,b:2})//false (地址不同)
2.Object.assign() 方法用于将所有可枚举的自身属性从一个或多个源对象复制到目标对象。

语法:Object.assign(target, ...sources) 参数:target:目标对象——应用源属性的对象,修改后返回。sources:源对象——包含你要应用的属性的对象。

返回值:修改后的目标对象。

let obj1= {a:1,b:2}
let obj2 = {c:3,d:4}
Object.assign(obj1,obj2)//{a: 1, b: 2, c: 3, d: 4}

3.Object.entries() ES8的Object.entries是把对象转成键值对数组, [key, value] 对的数组。

语法:Object.entries(obj)

参数:obj要返回其自己的可枚举字符串键属性 [key, value] 对的对象。返回值:给定对象自己的可枚举字符串键属性 [key, value] 对的数组。 Object.fromEntries则相反,是把键值对数组转为对象

const obj1= {a:1,b:2}
Object.entries(obj1)//[['a',1],['b',2]]

let arr = [['a',1],['b',2]]
Object.fromEntries([['a',1],['b',2]])//{a: 1, b: 2}
4.Object.values() 方法返回给定对象自己的可枚举属性值的数组,其顺序与 for...in 循环提供的顺序相同。

语法:Object.values(obj)

参数:obj要返回其可枚举自身属性值的对象。返回值:包含给定对象自己的可枚举属性值的数组。

let obj = {a:1,b:2,c:3}
Object.values(obj) // [1,2,3]
5.Object.keys()。

Object.keys() 方法用于返回给定对象自己的可枚举属性名称的数组,以与普通循环相同的顺序迭代。

语法:Object.keys(obj)

参数:obj要返回可枚举自身属性的对象。

返回值:表示给定对象的所有可枚举属性的字符串数组。

let obj = {a:1,b:2,c:3}
Object.keys(obj) // ['a','b','c']
6.Object.prototype.hasOwnProperty()。

hasOwnProperty() 方法返回一个布尔值,指示对象是否具有指定的属性作为它自己的属性。

如果指定的属性是对象的直接属性,则该方法返回 true — 即使值为 null 或未定义。如果该属性是继承的或根本没有声明,则返回 false。

语法:hasOwnProperty(prop)

参数:prop要测试的属性的字符串名称或符号。

返回值:如果对象将指定的属性作为自己的属性,则返回true;否则为false

7.Object.prototype.toString()。

toString() 方法返回一个表示对象的字符串。当对象将被表示为文本值或以期望字符串的方式引用对象 时,将自动调用此方法 id。默认情况下,toString() 方法由从 Object 继承的每个对象继承。

语法:toString()

返回值:表示对象的字符串。

8.Object.freeze()。

Object.freeze() 方法冻结一个对象,这意味着它不能再被更改。冻结对象可防止向其添加新属性,防止删除现有属性,防止更改现有属性的可枚举性、可配置性或可写性,并防止更改现有属性的值。它还可以防止其原型被更改。

语法:Object.freeze(obj)

参数:obj要冻结的对象。返回值:传递给函数的对象。

9.Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。

语法:const me = Object.create(person);

参数:

proto:新创建对象的原型对象。

propertiesObject可选。

二、数组的方法

1、sort( )

sort 排序 如果下面参数的正反 控制 升序和降序 ,返回的是从新排序的原数组。

let arr = [8,0,3,4,5]
arr.sort() //[0, 3, 4, 5, 8]
console.log(arr) //[0, 3, 4, 5, 8]
2、splice( )

向数组的指定index处插入 返回的是被删除掉的元素的集合,会改变原有数组;截取类 没有参数,返回空数组,原数组不变;一个参数,从该参数表示的索引位开始截取,直至数组结束,返回截取的数组,原数组改变;两个参数,第一个参数表示开始截取的索引位,第二个参数表示截取的长度,返回截取的数组,原数组改变;三个或者更多参数,第三个及以后的参数表示要从截取位插入的值。会改变原数据。

let arr = [8,0,3,4,5]
arr.splice() //[]
console.log(arr) // [8,0,3,4,5]

let arr = [8,0,3,4,5]
arr.splice(1) //[0,3,4,5](注:起始索引是从0开始)
console.log(arr) // [8](改变原数组)

let arr = [8,0,3,4,5]
arr.splice(11) // [0]
console.log(arr) // [8,3,4,5](改变原数组)

let arr = [8,0,3,4,5]
arr.splice(0,1,2,1) // [8]
console.log(arr) // [2, 1, 0, 3, 4, 5]
3、pop( )

从尾部删除一个元素 返回被删除掉的元素,改变原有数组。

let arr = [8,0,3,4,5]
arr.pop() // [5]
console.log(arr) // [8,0,3,4](改变原数组)
4、push( )

向数组的末尾追加 返回值是添加数据后数组的新长度,改变原有数组。

let arr = [8,0,3,4,5]
arr.push(7) // 6
console.log(arr) // [8,0,3,4,5,7](改变原数组)
5、unshift( )

向数组的开头添加 返回值是添加数据后数组的新长度,改变原有数组。

let arr = [8,0,3,4,5]
arr.unshift(7) // 6
console.log(arr) // [7,8,0,3,4,5](改变原数组)
6、shift( )

从头部删除一个元素 返回被删除掉的元素,改变原有数组。

let arr = [8,0,3,4,5]
arr.shift() // 8
console.log(arr) // [0,3,4,5](改变原数组)
 
7、reverse( )

原数组倒序 它的返回值是倒序之后的原数组。

let arr = [8,0,3,4,5]
arr.reverse() // [5,4,3,0,8]
console.log(arr) // [5,4,3,0,8](改变原数组)
8、concat( )

数组合并。

let arr1 = [1,1,1]
let arr2 = [2,3,4]
arr1.concat(arr2) // [1,1,1,2,3,4]
9、slice( )

数组元素的截取,返回一个新数组,新数组是截取的元素,可以为负值。从数组中截 取,如果不传参,会返回原数组。如果只传入一个参数,会从头部开始删除,直到数组结束,原数组不会改变;传入两个参数,第一个是开始截取的索引,第二个是结束截取的索引,不包含结束截取的这一项,原数组不会改变。最多可以接受两个参数。

let arr = [8,0,3,4,5]
arr.slice(3) // [4,5]
console.log(arr) // [5,4,3,0,8](不改变原数组)
arr.slice(24) // [3,4]
10、join( )

将数组进行分割成为字符串 这能分割一层在套一层就分隔不了了。

let arr = [8,0,3,4,5]
arr.join() //'8,0,3,4,5'
11、toString( )

数组转字符串。

let arr = [8,0,3,4,5]
arr.toString() // '8,0,3,4,5'
12、forEach( )

数组进行遍历;没有返回值的推进使用,不能用break中断循环,使用try,throw new Error()catch可中断循环。

13、map( )

没有return时,对数组的遍历。有return时,返回一个新数组,该新数组的元素是经过过滤(逻辑处理)过的函数。也不能中断循环,同forEach。不能对空数组循环。不会改变原数组。

14、filter( )

对数组中的每一运行给定的函数,会返回满足该函数的项组成的数组。

let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let res = nums.filter((num) => { return num > 5; })
console.log(res); // [6, 7, 8, 9, 10]
15、every( )

当数组中每一个元素在callback上被返回true时就返回true。(注:every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。

16、some( )

当数组中有一个元素在callback上被返回true时就返回true。(注:every其实类似filter,只不过它的功能是判断是不是数组中的所有元素都符合条件,并且返回的是布尔值)。

17、reduce( )

回调函数中有4个参数。prev(之前计算过的值),next(之前计算过的下一个的值),indexarr。把数组列表计算成一个。

语法 
arr.reduce(function(prev,cur,index,arr){
... 
}, init);

//prev 必需。累计器累计回调的返回值; 表示上一次调用回调时的返回值,或者初始值 init;

//cur 必需。表示当前正在处理的数组元素;

//index 可选。表示当前正在处理的数组元素的索引,若提供 init 值,则起始索引为- 0,否则起     始索引为1;

//arr 可选。表示原数组;

//init 可选。表示初始值。


const arr = [1,2,3,4,5];
const sum = arr.reduce(function(prev,cur,index,arr){
    console.log(prev,cur,index);
    return prev + cur;
});
console.log('arr:',arr,'sum:',sum);

//1 2 1
//3 3 3 2
//3 6 4 3
//3 10 5 4
//arr: [1, 2, 3, 4, 5] sum: 15
18、isArray()

判断是否是数组。

19、indexOf()

找索如果找到了就会返回当前的一个下标,若果没找到就会反回-1。

20、lastIndexOf()

它是从最后一个值向前查找的 找索如果找到了就会返回当前的一个下标,若果没找到就会反回-1。

21、Array.of()

将一组值转换为数组。

let str = '1111'
Array.of(str)//['1111']
22、Array.from( )

将对象或字符串转成数组,注意得有length

let str = '1111'
Array.from(str)//['1','1','1','1']
23、fill填充方法

可以传入3各参数,可以填充数组里的值也就是替换,如果一个值全部都替换掉,第一个参数就是值,第二个参数,从起始第几个,第三个参数就是最后一个。

25、find ()

查找这一组数 符合条件的第一个数 给他返回出来。

26、findIndex()

查找这一组数,符合条件的第一数的下标,给他返回出来,没有返回 -1。

三、补充:这里字符串的方法也总结吧!

1chartAt():返回在指定位置的字符;

2concat():返回新的字符串**,将一个或多个字符串与原字符串连接合并

3indexOf():检索字符串,返回第一次出现的索引,没有出现则为-1

4lastIndexOf(searchValue[ fromIndex]) 返回从字符串尾部开始第一次出现的索引,没有则-1,fromIndex的值相对于从尾部开始的索引

5split():返回一个以指定分隔符出现位置分隔而成的一个数组,数组元素不包含分隔符

6substr():从起始索引号提取字符串中指定数目的字符;

7substring():提取字符串中两个指定的索引号之间的字符;

8toLowerCase():字符串转小写;

9toUpperCase():字符串转大写;

10valueOf():返回某个字符串对象的原始值; 

11trim():删除字符串两边的空格;

12、trimeState 取出开始的空格

13、trimeEnd  去除末尾空格

14includes(searchString[, position])返回boolean,判断一个字符串是否包含在另一个字符串中,从postition索引开始搜寻,默认0

15slice():提取字符串片段,并在新的字符串中返回被提取的部分;

16search(regexp)返回首次匹配到的索引,没有则-1,执行正则表达式和 String 对象之间的一个搜索匹配

17toString()返回一个表示调用对象的字符串,该方法返回指定对象的字符串形式

18trim()返回去掉两端空白后的新字符串 还有trimend trimstart

19replace() 把指定的字符串替换成为别的字符