常用util

297 阅读1分钟

返回字符串中用特定字符包裹的keyWords的起始位置和长度 ,并且可以自定义包裹模板

let str = '__sdfa__fjajpqwieop__aosijdf__oqjwoej__oasjdfo'
function $getKeys(template, str) {
  let len = template.length, result = [], num = 0
  while (str.indexOf(template, num) != -1) {
    let idx1 = str.indexOf(template, num)
    let idx2 = str.indexOf(template, idx1 + 1)
    if (idx1 != -1 && idx2 != -1) result.push([idx1 + len, idx2 - idx1 - len])
    num = idx2 == -1 ? idx1 + 1 : idx2 + 1
  }
  return result
}


对象扁平化:

let obj = {
  name: 'zowie',
  birthday: {
    year: '1999',
    month: '11',
    day: '10',
    time: {
      hour: '00',
      min: '00'
    }
  },
  age: 22,
}
const flattenObject = function (object) {
  let name = '', result = {}
  function flatten(obj1, name1) {
    for (let key in obj1) {
      if (obj1[key] instanceof Object) {

        flatten(obj1[key], name1 + key + '.')
      } else {
        result[name1 + key] = obj1[key]
      }
    }
  }
  flatten(object, name)
  return result
}
console.log(flattenObject(obj));
/*{
  name: 'zowie',
  'birthday.year': '1999',
  'birthday.month': '11',
  'birthday.day': '10',
  'birthday.time.hour': '00',
  'birthday.time.min': '00',
  age: 22
}*/