stroke-dashoffset
, так, чтобы штрих появлялся, создавая эффект прорисовки.function cmp($a, $b) {
if ($a[2] == $b[2]) return 0;
return ($a[2] < $b[2]) ? -1 : 1;
}
);
usort($array, "cmp");
ctx.putImageData(imagedata, dx, dy);
ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
выдрать из него кусочек.. например [0, 0, 10, 10]
var pixels = context.getImageData(0, 0, 320, 240);
var data = pixels.data; // в data попадает одномерный массив.
target.putImageData( pixels, 15, 15, 0, 0, 10, 10);
/*
15, 15 – где разместить (отступив по 15px слева сверху в target'е)
0, 0 – откуда копировать в координатах context'а
10, 10 – ширина, высота региона копирования
*/
arr2 = arr2.filter(e => !~arr.indexOf(e));
// facebook.com,ya.ru
~
которое даст 0 в единственном случае, когда операнд равен -1. Его отрицание !
даст true в том же единственном случае. Итого эта функция вернёт true только, если элемент не найден в массиве arr. function test(varbl) {
varbl = varbl || 0;
alert(varbl);
}
test();
test( 100500);
var varbl;
if( Math.random() > 0.5) varbl = 100500;
&&
принимает значение true
в единственном случае – если оба операнда true
.a && b
проверяет по очереди: сначала, приводится ли к значению true
первый операнд, a
? Если нет, то дальше проверять нет смысла и выражение возвращает первый операнд, а
.a
не пустой и при переводе в логическое true | false даёт таки true
, то так же проверяется второе выражение, b
.jj(false)
.0 = 0000 0000
1 = 0000 0001
2 = 0000 0010
3 = 0000 0011
4 = 0000 0100
5 = 0000 0101
6 = 0000 0110
7 = 0000 0111
8 = 0000 1000
9 = 0000 1001
3 = 0000 0011
означает 20 + 21 = 1 + 2 = 3.1 - бит 0 - notify
2 - бит 1 - friends
4 - бит 2 - photos
8 - бит 3 - audio
12 = 0000 0000 0000 1100
return +a[attr] > +b[attr] ? 1: -1;
return +a[attr] - b[attr];
const sortFunc = function sortFunc(data, elem) {
switch( elem.getAttribute('name')) {
case 'id':
case 'salary':
data.sort((a, b) => +a[attr] - b[attr]);
break;
case 'user':
case 'position':
case 'gender':
data.sort((a, b) => a[attr] > b[attr] ? 1 : (a[attr] < b[attr] ? -1 : 0));
break;
default:
throw('Bad attribute');
}
};
00 01 02
10 11 12
20 21 22
00 : 0+0 = 0
10, 01 : 1+0 = 0+1 = 1
20, 11, 02: 2+0 = 1+1 = 0+2 = 2
var arr = [
'o,x,x'.split(','),
'x,o,o'.split(','),
'o,x,o'.split(','),
];
var r, c, key, diags = {};
for(r = 0; r < arr.length; r++) {
for(c = 0; c < arr[r].length; c++) {
key = r + arr[r].length - 1 - c; // слева сверху вправо вниз
// key = r + c; // слева снизу вправо вверх
if( diags.hasOwnProperty(key)) {
if( diags[key] !== arr[r][c]) diags[key] = false;
} else {
diags[key] = arr[r][c];
}
}
}
for( key in diags) if( diags[key] === false) delete diags[key];
// {"0":"x","2":"o","3":"x","4":"o"}
user_params()
отработает сразу и вернет null. А ответ от ВК будет получен когда-то потом и попадёт во вложенную функцию.function user_params(id, param, callback) {
vk('users.get', {user_ids: id, fields: param}, function(error, response){
if (error) {
console.log(error);
} else callback(response[0][param]);
});
};