2014-01-07 45 views
3

書籤變化我有一個JavaScript數組等['1','1.1','1.1.1','1.2','1.2.1',.......] 它形成書籤序列等:ALGO用於在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]它必須被相應向下like.Previously它是從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中尋找一些解決方案來修改數組列表。

+1

環路和'6 + parseInt函數( 'NXY ..',10)'爲parseInt函數永遠是'N'任何整數'N' –

+0

亞歷克斯將請您詳細闡述..如果我做parseInt函數( 'NXY','7.1.2')它給NaN – Sumeet

+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.xy是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

怎麼樣;

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"]