js数组去重的方法

Array.prototype.unique = function () {
var r = []
var n = {}

for(var i = 0; i < this.length; i++) {
var val = this[i]
var type = typeof val

if (!n[val]) {
r.push(val)
n[val] = [type]
} else if (n[val].indexOf(type) < 0) {
r.push(val)
n[val].push(type)
}
}

return r
}
var arr = [112,112,34,'你好','112',112,34,'你好','str','str1', {}, {}, null, null]

arr.unique() // [112, 34, "你好", "112", "str", "str1", {…}, null]

js focus end

export let setFocus = (target) => {
let t = jQuery(target).val()
jQuery(target).val('').focus().val(t)
}
setFocus('input')

js链式取值(函数解析字符串)

开发中,链式取值是非常正常的操作,如:
res.data.goods.list[0].price
有时候会出现错误:
Uncaught TypeError: Cannot read property 'goods' of undefined

通过函数解析字符串验证

function get(obj, props, def) {
if ((obj == null) || obj == null || typeof props !== 'string') return def;

const temp = props.split('.');
const fieldArr = [].concat(temp);

temp.forEach((e, i) => {
if (/^(\w+)\[(\w+)\]$/.test(e)) {
const matchs = e.match(/^(\w+)\[(\w+)\]$/);
const field1 = matchs[1];
const field2 = matchs[2];
const index = fieldArr.indexOf(e);
fieldArr.splice(index, 1, field1, field2);
}
})

return fieldArr.reduce((pre, cur) => {
const target = pre[cur] || def;

if (target instanceof Array) {
return [].concat(target);
}
if (target instanceof Object) {
return Object.assign({}, target)
}
return target;
}, obj)
}

使用:

var c = {
  a: {
    b: [1, 2, 3]
  }
}
get(c, 'a.b') // [1,2,3]
get(c, 'a.b[1]') // 2
get(c, 'a.d', 12) // 12

js获取url参数方法

export let getUrlParam = (name) => {
let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
let r = window.location.search.substr(1).match(reg)

if (r != null) {
return decodeURI(r[2])
} else {
return null
}
}

git shallow clone

git clone 默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能:

$ git clone --depth=1 git@github.com:hd1987/hd1987.github.io.git

--depth=1 表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,如果之后又想获取完整历史信息,可以使用下面的命令:

$ git fetch --unshallow

webpack4 基本设置应用示例 (Nodejs -v10)

目录结构

dist
|  font
|  |  ...
|  images
|  |  ...
|  js
|  |  index.js
|  css
|  |  styles.css
node_modules
src
|  font
|  |  ...
|  images
|  |  ...
|  js
|  |  module
|  |  |  loading.js
|  |  |  ...
|  |  index.js
|  scss
|  |  base
|  |  |  ...
|  |  function
|  |  |  ...
|  |  layout
|  |  |  ...
|  |  mixin
|  |  |  ...
|  |  _variables.scss
|  |  styles.scss
package.json
webpack.config.js
webpack.config.entry.js(把需要编译的多个js入口单独写配置文件)

使用方法

npm install 安装命令(每个项目仅需执行一次)
npm run-script build 编译一次,并压缩文件
npm start 编译并启动监听

Read more

create-react-app 使用摘要

Github地址: create-react-app

安装、启动命令

npm install -g create-react-app
create-react-app my-app

cd my-app
npm start

初始目录结构

my-app
├── README.md
├── node_modules
├── package.json
├── .gitignore
├── public
│ └── favicon.ico
│ └── index.html
│ └── manifest.json
└── src
└── App.css
└── App.js
└── App.test.js
└── index.css
└── index.js
└── logo.svg
└── registerServiceWorker.js