// ранее: var something = ... ;
if( Array.isArray( something) console.log( 'isArray: true' );
if( something instanceof Array) console.log( 'instanceof: true' );
if( Object.prototype.toString.call( something ) === '[object Array]' ) console.log( 'toString: true');
if( something.constructor === Array) console.log( 'constructor: true');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('What do you think of Node.js? ', (answer) => {
// здесь что-то делайте с полученной строкой answer
console.log(`Thank you for your valuable feedback: ${answer}`);
rl.close();
});
var result = {};
for( prop in this) {
if( this.hasOwnProperty( prop) && typeof prop != 'function') {
result[ prop] = this[ prop];
}
}
return result;
wall_comments
отражает настройку «Отключить комментирование записей» в «Общих»:wall_comments
.const currentTime = 1501649511661
и в коде сравнивать с текущим системным временем. Различие более, чем на X считать признаком закэшированности страницы.site.ru/page?mytime=1501649511661
\b
посчитает любой кириллический символ не-принадлежащим к слову.\b
надо заменить на "начало строки или пробельный символ, после которого идёт искомые буквы": (?:^|\\s)
function findMatches( input, query) {
query = query.split(/\s+/);
var i, parts = [];
for(i in query) {
parts.push( '(?=.*(?:^|\\s)' + query[i] + ')');
}
var re = new RegExp('^' + parts.join(''), 'iug');
var matches = [];
for(i in str) {
if( re.test( str[i])) matches.push( str[i]);
}
return matches;
}
var str = [
"Превед веселый медвед"
,"Медведь, тебе привет"
,"ревед веселый едвед"
,"тебе привет"
];
var query = 'Пр мед';
var result = findMatches( str, query); // ["Превед веселый медвед","Медведь, тебе привет"]
...
оператор расширения (spread syntax) работает не в объявлении функции, а в её вызове; Upd. в объявлении функции троеточие тоже возможно и называется «оставшиеся параметры» (rest parameters) и, в отличие от arguments
в моём ответе (массивоподобный объект) является полноценным массивом переданных параметров. Всё это часть нового синтакса ECMAScript 6 и поддерживается не всеми браузерами.i = len
, но в массиве, скажем, длиной 3 нет элемента с индексом 3. Самый большой индекс это длина – 1 = 2
: [0, 1, 2]
function changeCollection() {
var result = [], i;
for( i = 0; i < arguments.length; i++) {
arguments[i].shift();
result.push( arguments[i]);
}
return result;
}
var args = [ [1,2,3], [4,5,6]];
changeCollection( ...args) // эксперимент не для всех браузеров [[2,3],[5,6]]
changeCollection( [7,8,9], ['a','b','c']) // работает везде [[8,9],["b","c"]]
function changeCollection(...arr) {
for( let i = 0; i < arr.length; i++) {
arr[i].shift();
}
return arr;
}
/(4\.[5-9])|(5\.0)/
/^((4\.[5-9])|(5\.0))$/
var re = new RegExp('^((4\.[5-9])|(5\.0))$');
var testTrue = '4.5,4.6,4.7,4.8,4.9,5.0'.split(',');
var testFalse = '4.4,1.1,-4.5,5.1,5.2,5.5,5.6,105.0,104.6'.split(',');
var i;
for(i in testTrue) if( re.test( testTrue[i]) !== true) throw('Failed at ' + testTrue[i]);
for(i in testFalse) if( re.test( testFalse[i]) !== false) throw('Failed at ' + testFalse[i]);
"All tests passed";
Произвольная строка до 50 символов, может включать латинские буквы и цифры.
Заданный Вами секретный ключ будет передаваться с каждым уведомлением от сервера в отдельном поле secret. Это позволит Вам достоверно определять, что уведомление пришло именно от нашего сервера. Чтобы исключить возможность подделки запросов, пожалуйста, не публикуйте значение секретного ключа в открытом доступе.
public function getPhotoById(int $photoId) : ?PartnersPhotoModel