js 小技巧

數組對象處理

  • 屬性提取、去重
let arr = [
 	{
		id: 1,
		name: 'aa',
		sex: 'man'
	},
	{
		id: 2,
		name: 'bb',
		sex: 'woman'
	},
	{
		id: 3,
		name: 'cc',
		sex: 'woman
	},
	{
		id: 4,
		name: 'dd',
		sex: 'man'
	}];
	let arr1 = arr.map(v => v.sex).filter((v, i, arr) => arr.indexOf(v) ==== i);
	// arr1 = ['man', 'woman']
  • 生成1-100的數組
let arr = Array(100).fill(0).map((x, i) => i + 1);
  • 替換屬性名
// 後臺數據: [{province: '河北省', value:12}, ...];
// 須要的格式(echarts 地圖數據格式):[{name: '河北', value: 12}];
// 改字段名
 convertArrJsonName(json: {}[], oldName: string, newName: string = 'name') {
   return JSON.parse(JSON.stringify(json).replace(eval(`/${oldName}/g`), newName));
 }
 // 改省份名
 convertProvinceName(data: {}[]) {
   return JSON.parse(JSON.stringify(data).replace(eval(`/[省|市|自治區|壯族自治區|回族自治區|維吾爾自治區|特別行政區]/g`), ''));

在小程序中貌似不支持eval(),因此把正則提出來面試

// 改字段名
 convertArrJsonName(json, oldName = 'province', newName = 'name') {
   let reg = new RegExp(oldName, 'ig');
   return JSON.parse(JSON.stringify(json).replace(reg, newName));
 }

變態面試官

+ 讀代碼
`
	var arr1 = [1,2,3,4,5,6];
	var arr2 = [1,2,3];
	for(var i = 0; i < arr1.length; i++) {
	  for(var i = 0; i < arr2.length; i++) {
		console.log('會出現死循環,由於裏面的循環會每次結束時都是2,再執行外面的++,知足外面的條件,繼續循環,致使死循環')
	  }
	}

	var arr3 = [1,2,3,0,4];
	for(var i = 0, ci; ci = arr3[i]; i++) {
	  console.log(i);
	  // i = 3時,會中止循環,由於循環條件ci=arr3[i]是有返回值arr3[i],因此循環遇到arr3的項爲false時,就會中止
	}
`
相關文章
相關標籤/搜索