我有一个像['1','1.1','1.1.1','1.2','1.2.1',.......]
这样的javascript数组
它正在形成书签序列,如:
1
1.1
1.1.1
1.2
1.2.1
1.2.1.1
1.2.2
2
2.1
2.1.1
2.2
2.3
3
3.1
3.2
3.3
4
4.1
现在我需要修改数组从7开始,如['7','7.1','7.1.1',7.2 ......]它必须相应地向下改变。之前它从1开始,修改后从7开始。
7
7.1
7.1.1
7.2
7.2.1
7.2.1.1
7.2.2
8
8.1
8.1.1
8.2
8.3
9
9.1
9.2
9.3
10
10.1
基本上是线序改变。 1变为7,影响1.1到7.1。同样下线。 我是新手程序员在javascript中寻找一些解决方案来修改数组列表。
答案 0 :(得分:3)
简洁优雅的解决方案:
var bookmark = ['1','1.1','1.1.1','1.2','1.2.1','1.2.1.1','1.2.2','2','2.1','2.1.1','2.2','2.3','3','3.1','3.2','3.3','4','4.1'];
function updateBookmark(bookmark) {
var split = bookmark.split('.');
split[0] = 6 + +split[0];
return split.join('.');
}
var updatedBookmark = bookmark.map(updateBookmark);
不是问题的一部分,但如果你想要将每个2.x.y更改为2.x.(3 + y),你可以做很少的改动:
function updateBookmark(bookmark) {
var split = bookmark.split('.');
if (split[0] !== '2' || split.length < 3) return bookmark;
split[2] = 3 + +split[2];
return split.join('.');
}
答案 1 :(得分:1)
怎么样;
var x = ['1','1.1','1.1.1','1.2','1.2.1','2','2.1'];
var y = [];
for (var i = 0; i < x.length; i++) {
var value = x[i];
var int = parseInt(value, 10) + 6;
y.push(int + value.substr((value + ".").indexOf(".")));
}
console.log(y)
>> ["7", "7.1", "7.1.1", "7.2", "7.2.1", "8", "8.1"]