8个有用的JavaScript技巧,你到底是不是前端程序员?

189b2e18297edb1fc7a02c9f285c4b8b.jpeg@wm_2,t_55m+5a625Y+3L+msvOWFiOeUn+iusuaKgOacrw==,fc_ffffff,ff_U2ltSGVp,sz_17,x_11,y_11

1. 确保数组值

使用 grid ,需要重新创建原始数据,并且每行的列长度可能不匹配, 为了确保不匹配行之间的长度相等,可以使用Array.fill方法。

let array = Array(5).fill('');

console.log(array); // outputs (5) ["", "", "", "", ""]

2. 获取数组唯一值

ES6 提供了从数组中提取惟一值的两种非常简洁的方法。不幸的是,它们不能很好地处理非基本类型的数组。在本文中,主要关注基本数据类型。

751c2fbd1e195a36c04ef64fed4cda15.png@wm_2,t_55m+5a625Y+3L+msvOWFiOeUn+iusuaKgOacrw==,fc_ffffff,ff_U2ltSGVp,sz_17,x_11,y_11

 

3.使用展开运算符合并对象和对象数组

对象合并是很常见的事情,我们可以使用新的ES6特性来更好,更简洁的处理合并的过程。

// merging objects

const product = { name: 'Milk', packaging: 'Plastic', price: '5$' }

const manufacturer = { name: 'Company Name', address: 'The Company Address' }

const productManufacturer = { ……product, ……manufacturer }; console.log(productManufacturer);

 

// outputs { name: "Company Name", packaging: "Plastic", price: "5$", address: "The Company Address" }

// merging an array of objects into one 

 

const cities = [

{ name: 'Paris', visited: 'no' },

{ name: 'Lyon', visited: 'no' },

{ name: 'Marseille', visited: 'yes' },

{ name: 'Rome', visited: 'yes' },

{ name: 'Milan', visited: 'no' },

 

{ name: 'Palermo', visited: 'yes' },

{ name: 'Genoa', visited: 'yes' },

{ name: 'Berlin', visited: 'no' },

{ name: 'Hamburg', visited: 'yes' },

{ name: 'New York', visited: 'yes' } ];


const result = cities.reduce((accumulator, item) => {

return {

……accumulator,

[item.name]: item.visited

}

}, {});

 

console.log(result);

/* outputs

Berlin: "no"

Genoa: "yes"

Hamburg: "yes"

Lyon: "no"

Marseille: "yes"

Milan: "no"

New York: "yes"

Palermo: "yes"

Paris: "no"

Rome: "yes"

*/

4. 数组 map 的方法 (不使用Array.Map)

另一种数组 map 的实现的方式,不用 Array.map

Array.from 还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。如下:

 

const cities = [

{ name: 'Paris', visited: 'no' },

{ name: 'Lyon', visited: 'no' },

{ name: 'Marseille', visited: 'yes' },

{ name: 'Rome', visited: 'yes' },

{ name: 'Milan', visited: 'no' },

{ name: 'Palermo', visited: 'yes' },

 

{ name: 'Genoa', visited: 'yes' },

{ name: 'Berlin', visited: 'no' },

{ name: 'Hamburg', visited: 'yes' },

{ name: 'New York', visited: 'yes' } ];

 

const cityNames = Array.from(cities, ({ name}) => name); 

console.log(cityNames);

// outputs ["Paris", "Lyon", "Marseille", "Rome", "Milan", "Palermo", "Genoa", "Berlin", "Hamburg", "New York"]

5. 有条件的对象属性

不再需要根据一个条件创建两个不同的对象,可以使用展开运算符号来处理。

306e3b7adcc58ce98f587640a45a86b9.png@wm_2,t_55m+5a625Y+3L+msvOWFiOeUn+iusuaKgOacrw==,fc_ffffff,ff_U2ltSGVp,sz_17,x_11,y_11

 

6. 解构原始数据

有时候一个对象包含很多属性,而我们只需要其中的几个,这里可以使用解构方式来提取我们需要的属性。如一个用户对象内容如下:

1092078365454478c559f896f596c1e4.png@wm_2,t_55m+5a625Y+3L+msvOWFiOeUn+iusuaKgOacrw==,fc_ffffff,ff_U2ltSGVp,sz_17,x_11,y_11

我们需要提取出两个部分,分别是用户及用户信息,这时可以这样做:

let user = {}, userDetails = {};

({ name: user.name, surname: user.surname, ……userDetails } = rawUser); console.log(user); // outputs { name: "John", surname: "Doe" }

console.log(userDetails); // outputs { email: "john.doe.com", displayName: "SuperCoolJohn", joined: "2016-05-05", image: "path-to-the-image", followers: 45 }

8.字符串插值

在用例中,如果正在构建一个基于模板的helper组件,那么这一点就会非常突出,它使动态模板连接容易得多。

const user = {

name: 'John',

surname: 'Doe',

details: {

email: 'john.doe.com',

 

displayName: 'SuperCoolJohn',

joined: '2016-05-05',

image: 'path-to-the-image',

followers: 45

}

}

 

const printUserInfo = (user) => {

const text = `The user is ${user.name} ${user.surname}. Email: ${user.details.email}. Display Name: ${user.details.displayName}. ${user.name} has ${user.details.followers} followers.` console.log(text);

 

}

printUserInfo(user);

// outputs 'The user is John Doe. Email: john.doe.com. Display Name: SuperCoolJohn. John has 45 followers.'

转载于:https://my.oschina.net/u/4146253/blog/3068580

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端程序员面试笔试宝典PDF》是一本帮助前端程序员备战面试和笔试的电子书籍。该书内容包含了面试题目、常见笔试题以及解析和答案。这本宝典对于想要进入前端开发行业或者进阶的人来说,是一本非常实用的参考资料。 首先,该宝典提供了大量的面试题目,从基础的HTML、CSS和JavaScript知识到高级的前端框架和工具,涵盖了前端开发技术的各个方面。这些面试题目旨在考察面试者对于前端技术的理解和应用能力,帮助面试者系统性地学习和掌握前端相关知识。 其次,宝典还包含了常见的笔试题目及其解析和答案。笔试题目的设计更注重考察面试者的编程能力和解决问题的能力。通过详细的解析和答案,读者可了解题目的解题思路和方法,提高自己的解题效率和技巧。 此外,宝典还提供了面试过程需要注意的事项和策略,如面试前的准备、面试时的表现技巧,以及常见的面试问题和回答技巧等。这些内容帮助读者在面试过程更加自信和从容,提高自己的竞争力。 总之,《前端程序员面试笔试宝典PDF》是一本帮助前端程序员备战面试和笔试的实用电子书籍。它提供了丰富的面试题目和笔试题目,配备详细的解析和答案,在帮助读者学习和巩固前端知识的同时,提高了面试和笔试的准备水平。无论是入门初学者还是有一定经验的前端开发者,都可以从该宝典获得帮助,提升自己的职业素养。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值