js {"skus[25-16-30-21][stock]": "0", "skus[25-16-30-21][status]": "1" }怎么转为对象格式
时间: 2023-11-21 17:02:53 浏览: 60
这段字符串看起来像是表单数据,可以使用 `URLSearchParams` API 将其转为对象格式。示例代码如下:
```javascript
const str = 'skus[25-16-30-21][stock]=0&skus[25-16-30-21][status]=1';
const params = new URLSearchParams(str);
const obj = {};
for (const [key, value] of params) {
const matches = key.match(/skus\[(\d+-\d+-\d+-\d+)\]\[(\w+)\]/);
const sku = matches[1];
const prop = matches[2];
if (!obj[sku]) {
obj[sku] = {};
}
obj[sku][prop] = value;
}
console.log(obj);
```
输出结果:
```javascript
{
"25-16-30-21": {
"stock": "0",
"status": "1"
}
}
```
代码解释:
- 首先使用 `URLSearchParams` API 将字符串转为 `URLSearchParams` 对象。
- 然后遍历 `URLSearchParams` 对象,使用正则表达式匹配出属性名和属性值。
- 将属性名转为类似对象属性的格式(如 `skus[25-16-30-21][stock]` 转为 `25-16-30-21.stock`)。
- 将属性名和属性值存入新的对象中。如果对象中没有对应的 SKU 属性,先创建一个空对象再存入属性名和属性值。
阅读全文