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 +104 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
5823
|
-
|
|
5824
|
-
return
|
|
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 #
|
|
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 #
|
|
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
|
});
|