raintee-maputils 1.0.23 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5819,9 +5819,9 @@ const treeDataAdapterNext = (data) => {
5819
5819
  return { treeData, checkedKeys }
5820
5820
  };
5821
5821
  const getLayerIdFidld = (str, field) => {
5822
- let kvs = str.split(';').map(kvstr => kvstr.split('='));
5823
- let layerId = kvs.find(item => item[0] === field)[1];
5824
- return layerId
5822
+ const kvs = str.split(';').map(kvstr => kvstr.split('='));
5823
+ const val = kvs.find(item => item[0] === field)[1];
5824
+ return val
5825
5825
  };
5826
5826
  /**
5827
5827
  * 生成唯一ID字符串
@@ -5887,13 +5887,13 @@ function generateKeyValueTableHTML(data, options = {}) {
5887
5887
  <tr style="background-color: '#f9f9f9';">
5888
5888
  <td style="
5889
5889
  padding: 8px 12px;
5890
- border: 1px solid #ccc;
5890
+ border: 1px solid #f9f9f9;
5891
5891
  font-weight: bold;
5892
5892
  min-width: 100px;
5893
5893
  ">属性</td>
5894
5894
  <td style="
5895
5895
  padding: 8px 12px;
5896
- border: 1px solid #ccc;
5896
+ border: 1px solid #f9f9f9;
5897
5897
  word-break: break-word;
5898
5898
  ">值</td>
5899
5899
  </tr>
@@ -5940,6 +5940,104 @@ function downloadByUrl(url, filename = '') {
5940
5940
  document.body.appendChild(a);
5941
5941
  a.click();
5942
5942
  document.body.removeChild(a);
5943
+ }
5944
+ /**
5945
+ * 合并字符串键值对和对象,重复键的值覆盖,新键添加到末尾
5946
+ * @param {string} str - 用';'分隔的key=value格式字符串
5947
+ * @param {Object} obj - 要合并的对象
5948
+ * @returns {string} - 合并后的key=value;key=value格式字符串
5949
+ */
5950
+ function mergeStringAndObject(str, obj) {
5951
+ // 1. 解析字符串为键值对数组
5952
+ const parseStringToPairs = (inputStr) => {
5953
+ if (!inputStr || typeof inputStr !== 'string') {
5954
+ return [];
5955
+ }
5956
+
5957
+ const pairs = [];
5958
+ const segments = inputStr.split(';');
5959
+
5960
+ for (const segment of segments) {
5961
+ const trimmedSegment = segment.trim();
5962
+ if (!trimmedSegment) continue; // 跳过空字符串
5963
+
5964
+ const equalIndex = trimmedSegment.indexOf('=');
5965
+ if (equalIndex === -1) {
5966
+ // 如果没有等号,当作键,值为空字符串
5967
+ pairs.push([trimmedSegment, '']);
5968
+ } else {
5969
+ const key = trimmedSegment.substring(0, equalIndex).trim();
5970
+ const value = trimmedSegment.substring(equalIndex + 1).trim();
5971
+ pairs.push([key, value]);
5972
+ }
5973
+ }
5974
+
5975
+ return pairs;
5976
+ };
5977
+
5978
+ // 2. 解析对象为键值对数组
5979
+ const parseObjectToPairs = (inputObj) => {
5980
+ if (!inputObj || typeof inputObj !== 'object' || Array.isArray(inputObj)) {
5981
+ return [];
5982
+ }
5983
+
5984
+ const pairs = [];
5985
+ for (const [key, value] of Object.entries(inputObj)) {
5986
+ // 处理值的类型转换
5987
+ let stringValue = '';
5988
+ if (value === null || value === undefined) {
5989
+ stringValue = '';
5990
+ } else if (typeof value === 'string') {
5991
+ stringValue = value;
5992
+ } else if (typeof value === 'number' || typeof value === 'boolean') {
5993
+ stringValue = value.toString();
5994
+ } else {
5995
+ // 对象、数组等复杂类型转为JSON字符串
5996
+ stringValue = JSON.stringify(value);
5997
+ }
5998
+ pairs.push([key, stringValue]);
5999
+ }
6000
+
6001
+ return pairs;
6002
+ };
6003
+
6004
+ // 3. 合并键值对数组(重复键覆盖,新键追加)
6005
+ const mergePairs = (strPairs, objPairs) => {
6006
+ const mergedMap = new Map(); // 用于存储合并后的键值对,便于覆盖
6007
+
6008
+ // 先添加字符串中的键值对
6009
+ for (const [key, value] of strPairs) {
6010
+ mergedMap.set(key, value);
6011
+ }
6012
+
6013
+ // 再添加对象中的键值对(重复键会覆盖)
6014
+ for (const [key, value] of objPairs) {
6015
+ mergedMap.set(key, value); // Map.set() 会自动覆盖重复键
6016
+ }
6017
+
6018
+ // 转换为数组(Map 会保持插入顺序,新键自然在末尾)
6019
+ return Array.from(mergedMap.entries());
6020
+ };
6021
+
6022
+ // 4. 将键值对数组合并为字符串
6023
+ const pairsToString = (pairs) => {
6024
+ return pairs
6025
+ .map(([key, value]) => `${key}=${value}`)
6026
+ .join(';');
6027
+ };
6028
+
6029
+ // 主流程
6030
+ try {
6031
+ const strPairs = parseStringToPairs(str);
6032
+ const objPairs = parseObjectToPairs(obj);
6033
+ const mergedPairs = mergePairs(strPairs, objPairs);
6034
+ const result = pairsToString(mergedPairs);
6035
+
6036
+ return result;
6037
+ } catch (error) {
6038
+ console.error('合并过程中发生错误:', error);
6039
+ return str; // 出错时返回原字符串
6040
+ }
5943
6041
  }
5944
6042
 
5945
6043
  var RainteeSourceMapTool = /*#__PURE__*/Object.freeze({
@@ -5948,6 +6046,7 @@ var RainteeSourceMapTool = /*#__PURE__*/Object.freeze({
5948
6046
  downloadByUrl: downloadByUrl,
5949
6047
  generateKeyValueTableHTML: generateKeyValueTableHTML,
5950
6048
  getLayerIdFidld: getLayerIdFidld,
6049
+ mergeStringAndObject: mergeStringAndObject,
5951
6050
  treeDataAdapter: treeDataAdapter,
5952
6051
  treeDataAdapterNext: treeDataAdapterNext
5953
6052
  });