Редактировать: Кажется, у вас есть связанный список, и вы хотите сместить список влево на один узел. Ваша логика, кажется, является своего рода реализацией Array.prototype.shift
.
class Node {
constructor(val) {
this.val = val
this.next = null
}
}
class LinkedList {
constructor(head) {
this.head = head
}
add(node) {
let start = this.head
if (start == null) this.head = node
else {
while (start.next) start = start.next
start.next = node
}
return this
}
/** Remove node from front of list and return its value */
shift() {
const item = this.head // x = Z.head (A)
this.head = this.head.next // Z.head = A.head.next (B)
console.log('(1)', this.head.val) // DEBUG: B <-- NEW
return item.val // x.val (A -- Original head ref value)
}
}
let listZ = new LinkedList()
.add(new Node('A'))
.add(new Node('B'))
.add(new Node('C'))
console.log('(2)', listZ.shift()) // A -- No longer a node in the list
.as-console-wrapper { top: 0; max-height: 100% !important; }
Работы в SQLServer
declare @myNumber int = 123
declare @leadingChar varchar(1) = '0'
declare @numberOfLeadingChars int = 5
select right(REPLICATE ( @leadingChar , @numberOfLeadingChars ) + cast(@myNumber as varchar(max)), @numberOfLeadingChars)
Обладают
Используйте REPLICATE
поэтому вам не нужно жестко кодировать все ведущие нули:
DECLARE @InputStr int
,@Size int
SELECT @InputStr=123
,@Size=10
PRINT REPLICATE('0',@Size-LEN(RTRIM(CONVERT(varchar(8000),@InputStr)))) + CONVERT(varchar(8000),@InputStr)
ВЫХОД:
0000000123
Я нашел хорошую статью здесь :
Заполнение строки ведущими нулями
Мне приходилось делать это много раз при выводе данных фиксированной длины Экспорт , где, например, числовой столбец состоит из 9 символов, и вам необходимо поставить перед префикс 0.