通过拆分字符串将字符串数组转换为对象数组
Convert array of strings to an array of objects by splitting the strings
我有大量来自 AWS S3 的字符串数组,格式如下:
1g2LNBuUNMBVppc311kZ / 1Q77N7KbUPOIOXUEJsd.xml
我想将其转换为具有文件夹名称的对象数组(字符串的第一部分直到/)和每个对象的文件数组。文件名是斜杠后面的字符串部分。例
[ { FolderName: '1g2LNBuUNMBVppc311kZ', Files: [123.xml, aba.xml] }, {} ]
关于我如何做到这一点的任何建议。
试试这个:
var array = [
"1g2LNBuUNMBVppc311kZ / 1Q77N7KbUPOIOXUEJsd.xml",
"1g2LNBuUNMBVppc311kZ / foo.xml",
"foo / bar.xml"
];
var output = array.reduce(function(array, field) {
var found = null;
var fields = field.split(/'s*'/'s*/);
// search for folder
for (var i = 0; i < array.length; ++i) {
if (array[i].folderName == fields[0]) {
found = array[i];
break;
}
}
if (found) {
// found folder push to files
found.files.push(fields[1]);
} else {
// new folder
array.push({folderName: fields[0], files: [fields[1]]});
}
return array;
}, []);
alert(JSON.stringify(output));
将数组简化为一个对象。首先为拆分逻辑制定一个辅助函数:
// convert String "path / file" into ["path", "file"]
function splitPath(string) {
var parts = string.split('/');
return [parts[0].trim(), parts.slice(1).join('/').trim()];
}
然后使用 reduce()
转换为对象:
function toObject(data) {
return data.reduce(function(memo, entry) {
var parts = splitPath(entry);
var folder = memo[parts[0]] || [];
folder.push(parts[1]);
memo[parts[0]] = folder;
return memo;
}, {});
}
既然你要求一个对象数组,这里有如何转换它:
function toArrayOfObjects(folders) {
Object.keys(folders).map(function(folderName) {
return {
FolderName: folderName,
Files: folders[folderName]
};
});
}
相关文章:
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串