编写JS转换数组脚本



大家好,我对脚本和获得输出格式的方法有点疑问,比如:

hierarchicalCategories.lvl0 : Womens  
hierarchicalCategories.lvl1 : Womens > Accessories  
hierarchicalCategories.lvl2 : Womens > Accessories > Bags  
hierarchicalCategories.lvl3 : Womens > Accessories > Bags > Sport- & Travel Bags

我的数组很简单:["女式"、"配饰"、"箱包"、"运动-旅行包"]
所以我试图对一个函数进行编码并获得预期的数据,但直到一开始,我都无法获得我当前的位置和数组的第一个位置。

let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"];
let rootName = "hierarchicalCategories.lvl";
const reindexFunction = () => {
let current_position = 0;
let size = categories.length;
for (current_position; current_position < size; current_position++) {
let first = rootName + current_position;
if (current_position !== 0) {
let categ =
categories[current_position - 1] +
" " +
">" +
" " +
categories[current_position];
console.log(first+":"+categ);
} else {
let categ = categories[current_position];
console.log(first+":"+categ);
}
}
};
reindexFunction();

这样做的结果是:

hierarchicalCategories.lvl0:Womens
hierarchicalCategories.lvl1:Womens > Accessories
hierarchicalCategories.lvl2:Accessories > Bags
hierarchicalCategories.lvl3:Bags > Sport- & Travel Bags

我确信这很容易,但我搜索了一些方法来实现这一点,但一无所获。谢谢你的帮助,小贴士。

只需迭代类别并将类别从索引0获取到当前索引。我使用了数组的forEach、slice和join方法:

  • 使用forEach迭代类别
  • 使用切片将索引0中的项获取到当前索引
  • 使用join将切片格式化为所需格式

注意:console.log默认情况下在每个参数之间添加一个空格

let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"];
let rootName = "hierarchicalCategories.lvl";
categories.forEach((c, i) => console.log(rootName+i, ':', categories.slice(0, i+1).join(' > ')))

我想到的最直接的解决方案是将categories数组的索引映射到从连接数组的所有元素到索引的字符串。

我使用Array.prototype.map并使用它传递给回调函数(即索引)的第二个参数来执行此操作。第一个参数是值本身,但我们对此不感兴趣,这就是为什么我称它为_,但它没有被使用。

我不确定所需的确切输出格式——你说转换数组,所以我认为结果应该是另一个数组。但如果不是这样的话,应该很容易调整。

const categories = ['Womens', 'Accessories', 'Bags', 'Sport- & Travel Bags']
const rootName = 'hierarchicalCategories.lvl'
function buildHierarchicalCategories (categories) {
return categories.map((_, i) =>
`${rootName}${i} : ${categories.slice(0, i + 1).join(' > ')}`
)
}
console.log(buildHierarchicalCategories(categories))

或者您可以保留类别并将其添加到

let categories = ["Womens", "Accessories", "Bags", "Sport- & Travel Bags"];
let rootName = "hierarchicalCategories.lvl";
let level = "";
categories.map((e, index) => {
level += e;
console.log(rootName + index + " : " + level);
level += " > ";
});

最新更新