目录

antd

  1. antd2.0.1里的Cascorder这个组件,它的defaultValue不起作用,是一个bug。当我发现这是一个bug的时候,应该想着如何去避免这个bug,比如使用value, 而不是告诉别人这是个bug。要学会自己解决问题!!!

es6

Object.entries()

Object.entries()方法返回给定对象自己的枚举属性[key, value]对的数组。其顺序和与for...in循环提供的顺序相通,区别在于for...in循环枚举原型中的属性。

下面看例子:

const Person = {
name: 'yuzf',
age: '18',
gender: 'man',
}; // [['name': 'yuzf'], ['age': 18], ['gender', 'man']]
console.log(Object.entries(Person));
const result = {}; // 数组解构/for of 循环
for (const [key, value] of Object.entries(Person)) {
// good
result[key] = value; // bad
// result.key = value;
}

Object.keys()

Object.keys()返回一个数组,其元素是对应于直接在对象上发现的可枚举属性的字符串(即不包含原型链上的)。属性的顺序与通过手动循环对象的属性给出的顺序相同。

下面直接看代码说明:

const arr1 = ['a', 'b', 'c'];
console.log(Object.keys(arr1)); // ['0', '1', '2'] const person = {
name: 'yuzf',
age: 18,
gender: 'man',
}; for (const key of Object.keys(person)) {
console.log(key); // name, age, gender
}

Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法返回一个直接发现给定对象的所有属性(可枚举和不可枚举)的数组。

下面看代码例子:

const arr = ['a', 'b', 'c'];
console.log(Object.getOwnPropertyNames(arr).sort);
// logs: ['0', '1', '2', 'length'] const arr2 = {
name: 'yuzf',
age: 18,
gender: 'man',
};
console.log(Object.getOwnPropertyNames(arr).sort);
// logs: ['name', 'age', 'gender']

很神奇的用法!!!

之前,我也遇到这样的需求, 将一个数组里包含的多个对象转成一个对象,结构像下面这个样子:

// origin
const Person = [
{ name: 'yuzf'},
{ age: 18 },
{ gender: 'man' },
]; // to => this
{
name: 'yuzf',
age: 18,
gender: 'man',
} // do
const obj = Person.reduce((x, y) => Object.assign({}, x, y), {})

eslint

Do not access Object.prototype method 'hasOwnProperty' from target object no-prototype-builtins, 大概的意思是不要使用对象原型上的方法,因为原型上的方法可能被重写了。This is why

那么该如何避免这个问题呢?下面请看代码:

// bad
if (obj.hasOwnProperty('name')) {
} // good
if (Object.prototype.hasOwnProperty.call(obj, 'name')) {
}

傻逼

可能是自己代码写着写着就将自己写懵了,fields.concat(['xx']), 这行代码执行后, 怎么fields的值没有变化。

这真是一件很傻的事情。

其他

  1. 一个简单的需求并不是看起来那么简单。
  2. 自己写的代码,一定要多测试,一定一定要!!!
  3. 这次向线上的数据库里插入了脏数据,以后遇到加了字段的需求,一定要多测试,多考量。

参考

mdn: Object.entries()

mdn: Object.keys()

mdn: Object.getOwnPropertyNames()

crm踩坑记(一)的更多相关文章

  1. crm踩坑记(二)

    Linux tmux 如何查看 tmux如何进行滚动呢? prefix + [, prefix为tmux的前置动作,默认是ctrl + b. 使用方向键或者pageUp来进行翻页. q可以退出滚动模式 ...

  2. crm踩坑记(三)

    React 如何同步更新state 由于setState方法是异步的,而通常很多时候在一个生命周期里更新state后需要在另一个生命周期里使用这个state. 下面介绍几个方法 // 1 this.s ...

  3. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  4. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  5. 【踩坑记】从HybridApp到ReactNative

    前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...

  6. Spark踩坑记——共享变量

    [TOC] 前言 Spark踩坑记--初试 Spark踩坑记--数据库(Hbase+Mysql) Spark踩坑记--Spark Streaming+kafka应用及调优 在前面总结的几篇spark踩 ...

  7. Spark踩坑记——从RDD看集群调度

    [TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...

  8. djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记

    情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...

  9. HttpWebRequest 改为 HttpClient 踩坑记-请求头设置

    HttpWebRequest 改为 HttpClient 踩坑记-请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebR ...

随机推荐

  1. HDU 6214 最小割边

    双倍经验题:HDU 6214,3987 求最小割的最小边. 方案一: 首先跑最大流,这个时候割上都满载了,于是将满载的边 cap = 1,其他 inf ,再跑最大流,这个时候限定这个网络的关键边就是那 ...

  2. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能

    休息了两天,还是决定把这个尾巴给收了.本篇是最后一篇,也算是草草收尾吧.今天要加上表情功能和群聊.基本上就差不多了,其他功能,读者可以自行扩展或者优化.至于我写的代码方面,自己也没去重构.好的,我们开 ...

  3. 【洛谷P3388】(模板)割点

    [模板]割点 割点集合:一个顶点集合V,删除该集合的所有定点以及与这些顶点相连的边后,原图不连通,就称集合V为割点集合 点连通度:最小割点集合中的顶点数 边连通度:最小割边集合中的边数 割点:割点集合 ...

  4. Android学习笔记_9_SQLiteOpenHelper对象之数据库增删改查以及事务回滚操作

    一.SQLite数据库: 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进 ...

  5. java循环作业0912

    题目一:一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? double a = 0.08; double h =0; int i=0; for(i=1;h&l ...

  6. 【办公-Word-VB】人民币大写转换-带完整注释

    完整代码见:我的CSDN博客 -------------------- 应公司财务人员的请求,需在Word中做个:输入阿拉伯数字,自动转换成大写,并填充到Word控件中对应的亿.万.千控件格子的功能, ...

  7. 菜鸟笔记 -- Chapter 4.7 代码注释与编码规范

    4.7 代码注释与编码规范 在程序代码中适当的添加注释可以提高程序的可读性和可维护性.好的编码规范可以使程序更易阅读和理解.下面我们将介绍几种代码注释,以及应该注意的编码规范. 4.7.1 代码注释 ...

  8. Java笔试--代码纠错

    package practice.javase; public abstract class Name { private String name; public abstract boolean i ...

  9. iOS:常用属性、方法

    前言:一段时间没接触,很容易就忘记以前的知识.专写一篇,供几个月没接触,拿起却忘记了. 0.宏定义.系统相关 0-1).宏定义.规范 变量: //全局变量通常用小写g来提示 int gNumb=0; ...

  10. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...