1、Object.values() 和 Object.keys() 的使用
- 在處理 object 的時候我們使用 Object 的一些自帶的一些方法
- Object.keys()返回 keys 的陣列,Object.values()返回 values 的陣列。
2、合理的使用 reduce/filter
- 需求1:處理這樣的物件中的 value 值,拼接成一個字串。
const obj = {
a: '1',
b: '2',
c: '3',
d: '',
e: '5'
...
}
Object.values(obj).filter(Boolean).join(',');
複製程式碼
- 需求2:需要處理一個 object 中的 values 返回一個新的物件。
let obj = {
a: '1',
b: '2',
c: '3',
d: '',
e: '5'
...
}
obj = {
a: 1,
b: 2,
c: 3,
d: '',
e: 5
...
}
_.reduce(object, (result, value, key) => result[key] = (Number(value), result)), {})
_.zipObject(Object.keys(obj),Object.values(obj).map(item=>item = Number(item)))
_.zipObject(['a', 'b'], [1, 2]);
Object.keys(obj).reduce((result,value,key,arr)=>{
obj[value] && (obj[value] = Number(obj[value]))
},{})
console.log(obj)
複製程式碼
3、Ts 定義任意屬性
const defaultValues: any = {};
const a = {} as any;
複製程式碼
interface Person {
name: string;
age?: number;
[propName: string]: any;
}
let tom: Person = {
name: 'Tom',
gender: 'male'
};
interface Person1 {
obj?:{
[propName: string]: any;
}
}
let Jerry: Person1 = {
obj:{
hobby: 'guitar'
}
}
複製程式碼
Ts 型別定義
陣列的幾種定義方法
let fibonacci: number[] = [1, 1, 2, 3, 5];
複製程式碼
let fibonacci: Array<number> = [1, 1, 2, 3, 5];
複製程式碼
interface NumberArray {
[index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];
複製程式碼
let list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }];
複製程式碼
解構賦值一個複雜的物件
- 當你需要解構一個變數的時候,又想給這個解構的值賦值型別,可以這麼做
cosnt { body } = ctx.request as { body: CreateOperation }
複製程式碼
Mobx的使用
- Mobox返回不是真正的陣列,通過mobx提供的toJS方法轉換成Array再使用
import { observable, computed } from 'mobx';
import { toJS } from 'mobx';
複製程式碼
參考