let a = [{v: 1}, {v: 2}, {v: 3}];
for (let obj of a) {
obj.v += 1;
}
a // [{"v":2},{"v":3},{"v":4}]
const el = document.querySelector('span.qodef-e-price-value.qodef-e--value');
el.removeChild(el.childNodes[0]);
ctx.translate(x, y)
и поворачивать на угол ctx.rotate(a)
.const img = document.querySelector("img");
const canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
canvas.toBlob((blob) => {
blob.arrayBuffer()
.then((buf) => {
// тут как-то отправить эту буффонаду через WebSocket
})
.catch(console.error)
;
}, "image/png");
var array = [
{
'key1': 'value1'
},
{
'key2': 'value2'
},
{'key1': 'value1-b'},
{'key1': 'value1-c'},
]
Массив объектов, в каждом из которых всего по 1 свойству. str
, и на выходе, видимо, массив значений. const getValues = (array, key) => array.filter((item) => item.hasOwnProperty(key))
.map((item) => item[key]);
getValues(array, "key1") // [ "value1", "value1-b", "value1-c" ]
const startDate = new Date(2021, 7, 8); // начало отсчёта
const today = new Date(); // сегодня
const daysPassed = Math.floor((today - startDate) / 864e5);
const future = new Date();
future.setDate(future.getDate() + 3 - daysPassed % 3);
document.querySelector('span.myDate')
.textContent = new Intl.DateTimeFormat(
'ru-RU',
{ month: 'long', day: 'numeric' }
)
.format(future);
:value="xxx"
selected
— точно так же0
потому, что первая буква имеет индекс 0
.s.length
– т.к. у последней буквы строки индекс s.length - 1
i++
или i = i + 1
— по одной позиции направо продвигаемся. ctx.clearRect(0 , 0 , ctx.canvas.width , ctx.canvas.height)
$mysql = new mysqli("localhost", "root", "root", "medixer");
$mysql->set_charset("utf8");
$stmt = $conn->prepare("INSERT INTO `users` (`login_user`, `name`, `password`, `dob`, `region`, `telephone`, `email`) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssss", $login, $name, $password, $dob, $region, $telephone, $email);
$stmt->execute();
$mysql->close();
function spread(q, volumes) {
const total = volumes.reduce((a, b) => a + b);
const result = volumes.slice().fill(0);
const target = volumes.map((v) => q * v / total);
while (q--) {
const demand = result.map((v, i) => target[i] - v);
const minIndex = demand.indexOf(Math.max(...demand));
result[minIndex]++;
}
return result;
}
spread(4, [1, 10, 3]) // [0, 3, 1]
spread(9, [1, 10, 3]) // [1, 6, 2]
spread(1, [10, 10, 10]) // [1, 0, 0] - слева направо при равных
spread(33, [10, 10, 10]) // [11, 11, 11] - переполняются тоже одинаково
spread(4, [2, 3, 1]) // [ 1, 2, 1 ]
spread(5, [2, 3, 1]) // [ 2, 2, 1 ]
spread(9, [2, 3, 1]) // [ 3, 5, 1 ]
index2 - index1 + 1
и заменить его фразой replacement.