from()、keys()、includes()、indexOf()、findIndex()、fill()、values()、some()、every()、find()、entries()

Jshttp://ll3462540450.gitee.io/blog/html/es.html#promise

Array.from()

Array.from()方法就是将一个类(伪)数组对象或者可遍历对象转换成一个真正的数组

1.所谓类(伪)数组对象,最基本的要求就是具有length属性的对象(但是没有数组的方法

2.该类数组对象的属性名必须为数值型或字符串型的数字 ( 该类数组对象的属性名可以加引号,也可以不加引号)

 const obj = {
     0:'a',
     1:'b',
     2:'c',
     length:3
 }
//  length 的长度 = 数字的长度 没有的用 ‘undefended’ 占位
//  如果把类数组的length 属性去掉 没有了length的类数组对象. 用Array.form() 就会得到一个空数组

// 1.对象转化为数组
 const newArr = Array.from(obj)
 newArr.push('d')
 console.log(newArr);   //[ 'a', 'b', 'c','d' ]

// 2.数组转化为数组对象
 const newArrObj = newArr.map((item,index)=>{
     return {
         name:item,
         key:index
     }
 })
 console.log(newArrObj);  //[ { name: 'a', key: 0 }, { name: 'b', key: 1 }, { name: 'c', key: 2 } ]

Object.keys()

Object.keys()方法的作用:遍历对象
返回结果:返回对象中每一项key的数组

1.属性名的类型是Number,那么Object.keys返回值是按照key从小到大排序

2.属性名的类型是String、Symbol,那么Object.keys返回值是按照属性被创建的时间升序排序。

const obj = {
  100: '一百',
  2: '二',
  7: '七'
}
Object.keys(obj) // ["2", "7", "100"]  //可以自动排序

Object.keys()方法可以结合forEach来使用

// 过滤对象中的 value = 0 并将其置为空

let params = {
  name: 0,
  age: 0,
  work: 'frontend'
}

方法一: 
for (let item in params) {
  if (typeof (params[item]) === "number" && (params[item]) === 0) {
    params[item] = params[item].replace = ''
  }
}

方法二: 
Object.keys(params).forEach((key,index) => {
  if(params[key] === 0) {
    params[key] = ''
  }
});
// params  { name: '', age: '', work: 'frontend' }

Array.prototype.includes()

include()的作用,是查找一个值在不在数组里,若在返回true,反之返回false

['a', 'b', 'c'].includes('a')     // true
['a', 'b', 'c'].includes('d')     // false

Array.prototype.includes()方法接收两个参数: 要搜索的值和搜索的开始索引。当第二个参数被传入时,该方法会从索引处开始往后搜索(默认索引值为0)。若搜索值在数组中存在则返回true,否则返回false。 

['a', 'b', 'c', 'd'].includes('b')         // true
['a', 'b', 'c', 'd'].includes('b', 1)      // true
['a', 'b', 'c', 'd'].includes('b', 2)      // false

Array.prototype.indexOf() 

indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在返回-1
注意:返回找到的索引或者不存在的-1,且不改变原数组

语法:arr.indexOf(searchElement[, fromIndex = 0])

Array.prototype._indexOf = function(){
 	if(this === null){throw new TypeError('"this" is null or not defined');}
 	
 	let that = Object(this),len = that.length >>> 0,param = arguments;
 	
 	if(param[1] && Math.abs(param[1])>= len)return -1;
 	
 	startIndex = Math.max((param[1] ? param[1] : 0), 0) ;
 	
 	while(startIndex < len){
 		if(startIndex in that && param[0] === that[startIndex])return startIndex;
 		startIndex++;
 	}
 	return -1;

Array.prototype.findIndex()

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引,若没有找到对应元素则返回-1。

const array = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(array.findIndex(isLargeNumber));  // expected output: 3

Array.prototype.fill(value,start,end)

fill() 用于数组元素的填充

arry.fill(value,sart, end)它本身是接受三个值的,第一个是我们将要替换成的值,第二个是我们选择替换开始的地方,第三个值是替换结束的地方;start 和 end 参数是可选的, 其默认值分别为 0 和 this 对象的 length 属性值。

const test = [1, 2, 3, 4];

// 仅仅传一个参数的情况
console.log(test.fill(1));  //[1, 1, 1, 1]

//传递两个参数的情况
console.log(test.fill(2,2))  //[1,2,2,2]

// 传递三个参数的情况
console.log(test.fill(1, 1, 2));  //[1,1,1,4]

Object.values()

使用Object.values()遍历对象的属性值,无需使用属性名

let obj = {a: 1, b: 2, c: 3}
Object.values(obj).forEach(value =>{ console.log(value); // 输出1, 2, 3})

Object.some()

some()方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

let arr = [
  { value: 'apply' },
  { value: '' }
]
let res = arr.some(item => item.value !== '' )  // true

Object.every()

every()方法测试一个数组内是不是所有元素都能通过某个指定函数的测试。它返回一个布尔值。

const arr = [
  { value: 'apply' },
  { value: '1' }
]
const res = arr.every(item => item.value !== '')  // true

Object.find()

find()方法返回数组中满足提供的测试函数的第一个元素的值,否则返回 undefined。

const arr = [
  { value: '' },
  { value: '11' }
]
const res = arr.find(item => item.value !== '')

Object.entries()

Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。

通俗点就是 Object.entries() 可以把一个对象的键值以数组的形式遍历出来,结果和 for...in 一致,但不会遍历原型属性

let obj = {a: 1, b: 2, c: 3}; 
Object.entries(obj).forEach(([key, value]) =>{   
 console.log(key + "- " + value); // 输出a- 1, b- 2, c- 3
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值