簡體   English   中英

Algo用於javascript中的書簽更改

[英]Algo for bookmark change in javascript

我有一個javascript數組,如['1','1.1','1.1.1','1.2','1.2.1',.......]正在形成書簽序列,如:

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中尋找一些解決方案來修改數組列表。

簡潔優雅的解決方案:

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('.');
}

怎么樣;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM