知栈 Logo知栈

JavaScript

复制到剪贴板

/**
 * 内容复制到剪贴板
 * @param {string} str 需要被复制的内容
 * @param {Function} success 复制成功回调函数
 * @param {Function} failure 复制失败回调函数
 */
function copyToClipboard(str, success, failure) {
  if (navigator && navigator.clipboard && navigator.clipboard.writeText) {
    navigator.clipboard.writeText(str).then(success).catch(failure);
  } else {
    let el = document.createElement('textarea');
    el.value = str;
    el.setAttribute('readonly', '');
    el.style.position = 'absolute';
    el.style.left = '-9999px';
    document.body.appendChild(el);
    el.select();
    if (document.execCommand('copy')) {
      success();
    } else {
      failure();
    }
    document.body.removeChild(el);
  }
}

注意

① Clipboard API 目前仅在 HTTPS 网站上支持;

重命名键

/**
 * 重命名键(只能改单个对象的单个键名)
 * @param {Object} obj 对象
 * @param {string} oldName 旧键名
 * @param {string} newName 新键名
 */
function renameKeys(obj, oldName, newName) {
  let newObj = {};
  for (let key in obj) {
    let newKey = key.replace(oldName, newName);
    newObj[newKey] = obj[key];
  }
  return newObj;
}

// 举例
const obj = { name: 'LiHua', age: '20', height: 170 };
renameKeys(obj, 'name', 'fullName');
// 返回: { age: "20", fullName: "LiHua", height: 170 }

最后更新于