/**
 * @file 工具函数
 * 常用方法,公共方法
 */

/**
 * @name GetLabelFormValue 对象数组中根据一个字段获取对象
 * @param {Array[Object]} array - 对象数组
 * @param {String} key - 字段名
 * @param {any} value - 该字段的预设值
 * @param {String} label - 可选,无匹配对象的空值字段
 */
 const GetObjFormKey = function (array, key = 'value', value = '', label) {
  if (!array) return {}

  for (var item of array) {
    if (String(item[key]) === String(value)) {
      return item
    }
  }
  if (label) {
    var result = {}
    result[label] = ''
    return result
  } else {
    return {}
  }
}

/**
 * 模拟a标签跳转
 * @param url
 * @param target
 * @return {*}
 */
 const ALink = function(url, target = '_blank') {
  const a = document.createElement('a');
  a.href = url;
  a.target = target;
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}
/**
 * 获取url参数
 * @param {*} name 参数名
 * @param {*} url
 * @returns
 */
 const getParameterByName = function (name, url) {
  if (!url) url = window.location.href;
  name = name.replace(/[[]]/g, '$&');
  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
    results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return '';
  return decodeURIComponent(results[2].replace(/\\+/g, ' '));
}

function getUrlSearchJson() {
  var url = location.search;
  if(!url) {
    return null;
  }
  var newObj = new Object();
  if (url.indexOf("?") != -1) {
      var strs = url.split('?')[1].split("&");
      for (var i = 0; i < strs.length; i++) {
          newObj[strs[i].split("=")[0]] = (strs[i].split("=")[1]) || '';
      }
  }
  return newObj;
}

export { GetObjFormKey, ALink, getParameterByName, getUrlSearchJson }