是的,这个问题已经被回答了很多次,相信我,我在互联网上搜索过它。然而,经过相当长的时间,我还没有找到一个好的解决方案。
我的问题如下:
想象一下以下结构的数组:
你可以清楚地看到值的重复。我试图实现的是这样一个嵌套对象:
然而,它显然总是会覆盖值,所以最后我会收到一个不完整的对象。
我的问题是:
如何编辑函数以便我收到一个完整的对象? 或者说 有哪些替代array.reduce()的方法?
我的问题如下:
想象一下以下结构的数组:
[
[ 'helpers', 'ConfigHelper.java' ],
[ 'helpers', 'GenerateRandomString.java' ],
[ 'helpers', 'package-info.java' ],
[ 'helpers', 'ScreenshotHelper.java' ],
[ 'pages', 'LoginPage.java' ],
[ 'pages', 'package-info.java' ],
[ 'pages', 'tests', 'LoginPageTest.java' ],
[ 'pages', 'tests', 'package-info.java' ],
[ 'pages', 'util', 'package-info.java' ],
[ 'pages', 'util', 'PageObject.java' ],
[ 'pages', 'util', 'PageObjectTest.java' ],
[ 'pages', 'util', 'PrimaryMethods.java' ],
[ 'webDriverSetup', 'browserDriverFactories', 'ChromeDriverFactory.java'],
]
你可以清楚地看到值的重复。我试图实现的是这样一个嵌套对象:
{
helpers: {
"ConfigHelper.java": "",
"GenerateRandomString.java": "",
"package-info.java": ""
},
pages: {
"LoginPage.java": "",
"package-info.java": "",
tests: {
"LoginPageTest.java": "",
"package-info.java": ""
},
util: {
"package-info.java": "",
"PageObject.java": "",
"PageObjectTest.java": "",
"PrimaryMethods.java": ""
}
},
webDriverSetup: {
browserDriverFactories: {
"ChromeDriverFactory.java": ""
}
}
}
每个数组值基本上都是另一个对象级别,除了最后一个值只有一个字符串作为其值。
一种有前途的方法是使用 array.reduce()
如下:
let arrays = [
[ 'helpers', 'ConfigHelper.java' ],
[ 'helpers', 'GenerateRandomString.java' ],
[ 'helpers', 'package-info.java' ],
[ 'helpers', 'ScreenshotHelper.java' ],
[ 'pages', 'LoginPage.java' ],
[ 'pages', 'package-info.java' ],
[ 'pages', 'tests', 'LoginPageTest.java' ],
[ 'pages', 'tests', 'package-info.java' ],
[ 'pages', 'util', 'package-info.java' ],
[ 'pages', 'util', 'PageObject.java' ],
[ 'pages', 'util', 'PageObjectTest.java' ],
[ 'pages', 'util', 'PrimaryMethods.java' ],
[ 'webDriverSetup', 'browserDriverFactories', 'ChromeDriverFactory.java'],
];
let treeView = {};
arrays.forEach(array => {
array.reduce(function(o, key) {
return o[key] = {};
}, treeView);
});
console.log(treeView);
我的问题是:
如何编辑函数以便我收到一个完整的对象? 或者说 有哪些替代array.reduce()的方法?
o[key]
转换为对象之前,请先测试它。 - Ibuif
,检查元素/键是否已经存在于对象中,并采取相应措施。就像在 Stack Overflow 上的每个“如何对对象数组进行分组”的问题中所做的那样。如果第一层有效,则可以添加第二层(tests
,util
,...)。 - Andreas