JS常用代码总结

124 阅读2分钟

两个数组中的差异

//获取两组数据中的相同数据
const arr1 = [
  { name: 'kk1', id: 1 },
  { name: 'kk2', id: 2 },
  { name: 'kk3', id: 3 },
  { name: 'kk4', id: 4 },
  { name: 'kk5', id: 5 },
  { name: 'kk6', id: 6 }
];
const arr2 = [
  { name: 'kk3', id: 3 },
  { name: 'kk6', id: 6 }
];
const resultArr = arr1.filter((item1) =>
  arr2.some((item2) => item2.id === item1.id)
);
console.log(resultArr);
//[{name: 'kk3', id: 3},{ name: 'kk6', id: 6 }]


//获取两组数据中的不同数据

const arr1 = [
  { name: 'kk1', id: 1 },
  { name: 'kk2', id: 2 },
  { name: 'kk3', id: 3 },
  { name: 'kk4', id: 4 },
  { name: 'kk5', id: 5 },
  { name: 'kk6', id: 6 }
];
const arr2 = [
  { name: 'kk3', id: 3 },
  { name: 'kk6', id: 6 }
];
const resultArr = arr1.filter((item1) =>
  arr2.some((item2) => item2.id === item1.id)
);
const resultArr2 = arr1.filter(
  (item1) => !arr2.some((item2) => item1.id === item2.id)
);
//结果
// [
//   { name: 'kk1', id: 1 },
//   { name: 'kk2', id: 2 },
//   { name: 'kk4', id: 4 },
//   { name: 'kk5', id: 5 },
// ]

rem适配布局

<meta
  name="viewport"
  content="width=device-width, initial-scale=1.0,maximum-scale=1,minimum-scale=1,user-scalable=no"
/>
autoFont();
window.onresize = function() {
  autoFont();
};

function autoFont() {
  var fontBase = 100;
  var designWidth = 750;
  var currentWidth = document.querySelector('html').clientWidth;
  var currentHeight = document.querySelector('html').clientHeight;
  if (currentWidth > currentHeight) {
    currentWidth = currentHeight;
  }
  var currentFontWidth = (fontBase * currentWidth) / designWidth;
  document.querySelector('html').style.fontSize = currentFontWidth + 'px';
}

页面滚动到指定位置

const contentForm = document.getElementById('content-form');
contentForm.scrollTo({
  top: 100,
  behavior: 'smooth' //  smooth(平滑滚动),instant(瞬间滚动),默认auto
});

判断是否是webview

/**
*判断是否是webview
*@returns {boolean}
*/
 function isWebview() {
  const ua = navigator.userAgent.toLowerCase();
  if (ua.match(/MicroMessenger/i) == "micromessenger") {
    // 微信浏览器判断
    return false;
  } else if (ua.match(/QQ/i) == "qq") {
    // QQ浏览器判断
    return false;
  } else if (ua.match(/WeiBo/i) == "weibo") {
    return false;
  } else {
    if (ua.match(/Android/i) != null) {
      return ua.match(/browser/i) == null;
    } else if (ua.match(/iPhone/i) != null || ua.match(/iPad/i) != null) {
      return ua.match(/safari/i) == null;
    } else {
      return ua.match(/macintosh/i) == null && ua.match(/windows/i) == null;
    }
  }
}

格式化手机号

/**
 * 格式化手机号
 * @param {string} phone
 * @returns {string} 123****3333
 */
function formatPhone(phone) {
  const reg = /^(\d{3})\d{4}(\d{4})$/
  return phone.replace(reg, '$1****$2')
}

格式化手机号

/**
 * 格式化身份证号 4**4
 * @param {string} card
 * @returns {string} str
 */
function formatIdCard(card) {
  if (card.length <= 2) {
    return card
  }
  const len = card.length - 2
  let str = card[0]
  const lastStr = card[card.length - 1]
  for (let i = 0; i < len; i++) {
    str += '*'
  }
  str += lastStr
  return str
}

格式化用户名

/**
 * 格式化用户名
 * @param {string} name
 * @returns {string} 熬**
 */
function formatName(name) {
  if (name.length <= 1) {
    return name
  }
  const len = name.length - 1
  let str = name[0]
  for (let i = 0; i < len; i++) {
    str += '*'
  }
  return str
}

校验手机号

/**
 * 校验手机号
 * @param {string|number} data
 * @returns {boolean}
 */
function validPhone(data) {
  if (!/^1[3456789]\d{9}$/.test(data)) {
    return false
  }
  return true
}

校验身份证

/**
 * 校验身份证
 * @param {string} data
 * @returns {boolean}
 */
function validCard(data) {
  const reg =
    /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/
  if (!reg.test(data)) {
    return false
  }
  return true
}

获取当前的ios版本是否低于某个大版本

/**
 * 判断当前的手机系统是否是ios,并且小于等于某个大版本
 * @param {string | number} ver
 * @returns {boolean}
 */
function getIosVersion(ver) {
  const str = navigator.userAgent.toLowerCase()
  const version = str.match(
    /cpu iphone os (.*?) like mac os/
  )
  if (version) {
    const versionFirst = Number(
      version[1].replace(/_/g, '.').split('.')[0]
    )
    if (versionFirst <= ver) {
      return true
    } else {
      return false
    }
  }
  return false
}