function eatme(s) {
var arr = s.split('')
, pos = [] // позиции удалябельных символов
, i
, todo = [] // позиции чтобы удалить
;
for(i=0;i<arr.length;i++) if( !arr[i].match(/[\s\d\.,\?\!:;\(\)"'`—–-]/)) pos.push(i);
if( pos.length === 0) return s; // нечего удалять
todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);
if( pos.length > 0 && Math.random() > 0.5) {
todo.push( pos.splice( Math.floor( Math.random() * pos.length),1)[0]);
}
// todo содержит 1 или 2 индеса для удаления
todo = todo.sort(function(a,b){return a>b?1:(a<b?-1:0)});
while(todo.length) arr.splice( todo.pop(), 1);
return arr.join('');
}
console.log( eatme("hello, world!"))
var words = {}, i, src = document.getElementById('text')
.innerText
.split(/[\s\.,:;!?]+/)
.map(function(el){ return el.toLowerCase()})
;
for(i=0; i<src.length; i++) {
word = src[i];
if( words.hasOwnProperty(word)) words[word]++;
else words[word] = 1;
}
var dupes = [];
for(i in words) if(words[i] > 1) dupes.push(i);
var p = document.createElement("p");
p.innerText = JSON.stringify(dupes);
document.body.appendChild(p);
var s = {comment:"test"};
var s1 = JSON.stringify(s); // {"comment":"test"}
var s2 = JSON.stringify(s1); // "{\"comment\":\"test\"}"
var s3 = JSON.stringify(s2); // "\"{\\\"comment\\\":\\\"test\\\"}\""
var s4 = JSON.stringify(s3); // "\"\\\"{\\\\\\\"comment\\\\\\\":\\\\\\\"test\\\\\\\"}\\\"\""
$('.class').hover(
function() {
var $el = $(this);
$el.addClass('active');
setTimeout(function() {
$el.removeClass('active')
}, 500);
}
);
// getTimeTill.php
$deadline = strtotime("2017-07-01 03:00:00");
echo round( 1000 * $deadline - 1000 * microtime(true)); // в миллисекундах
var start = (new Date).getTime();
$.get("getTimeTill.php", function( ms ){
var bias = Math.round(((new Date).getTime() - start) / 2);
var remains = ms + bias; // сколько остаётся микросекунд до события на данный момент
var deadline = (new Date).getTime() + remains; // локальное время События
// можно запускать таймер, который раз в 200 ms будет обновлять время до События
var el = document.getElementById("timer");
window.setInterval( function(){
var remains = Math.floor((deadline - (new Date).getTime())/1000);
var H = Math.floor( remains / 3600);
remains -= 3600 * H;
H = ( '0' + H ).substr(-2);
var M = Math.floor( remains / 60);
remains -= 60 * M;
M = ( '0' + M ).substr(-2);
var S = ( '0' + remains ).substr(-2);
timer.innerText = "" + H + ":" + M + ":" + S;
}, 200);
});
var eur = "10.50 EUR";
var price = parseFloat( s.substr( 0, s.length - 4)).toFixed(2); // "10.50"
var q = "55"; // jQuery возвращает строку
var total = parseFloat( price) * parseInt(q);
total = total.toFixed(2); // строка, точно два знака после запятой
var i, collection = document.getElementsByClassName('hello');
for( i = 0; i < collection.length; i++) {
collection[i].addEventListener('click', onClick);
}
function onClick() {
var i, index = -1;
for(var i=0; i < collection.length; i++) {
if( this === collection[i]) {
index = i;
break;
}
}
if( !!~index) alert(index);
}
$uslovie ?: $esli_false
вернёт само $uslovie
, если то соответствует true
.condition && do_it();
var test = true;
test && console.log("it was true!");
// или назначение
var Boo = test && "если тру"; // иначе Boo === test (что он там возвращает, 0, NaN, false?)
while()
из этого зоопарка присутствует только условие.for( i = 0; i < 2; i = i + 1) {
console.log( i ); // выводит значение i в консоль
}
i = 0
.i < 2
.0
.i = i + 1
.i < 2
и если всё ок, снова ныряем.1
.i = i + 1
, но условие уже не проходит проверку, т.к. i
стало равно 2
.while()
выглядел бы так:i = 0;
while( i < 2 ) {
console.log( i );
i = i + 1;
}
for()
это просто более компактная запись довольно типичного цикла. var dt = new Date();
var date = dt.getDate();
if( date < 15) dt.setDate(1); // до 15-го числа будет 1-е
else dt.setDate(15); // после 15-го – 15-е
// Display the month, day, and year. getMonth() returns a 0-based number.
var day = dt.getDate();
var month = dt.getMonth()+1;
var year = dt.getFullYear();
document.write(day + '-' + month + '-' + year);
// суммы – где сумма координат X + Y = N, для каждой диагонали N постоянно
var side = 5,
sum = Array.apply(null, Array(side * 2 - 1)).map(Number.prototype.valueOf,0),
row, col
;
for( row = 0; row < side; row++) {
for( col = 0; col < side; col++) {
sum[row + col] += arr[row][col];
}
}
result.innerHTML += '<pre>' + JSON.stringify(sum) + '</pre>';
// выборка всех под-элементов в блоке:
var $el = $('#block_id').children();
// какой-то один случайный из них:
var $random = $el[ Math.floor( Math.random() * $el.length)];
// вставить его куда-то ещё
$("#suda").append( $random);