function group(data, key, val = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const getVal = val instanceof Function ? val : n => n[val];
const grouped = {};
for (const n of data) {
const k = getKey(n);
(grouped[k] = grouped[k] || []).push(getVal(n));
}
return grouped;
}
group(arr, 'room')
// или
group(arr, n => n.room)
group(Array(5).keys(), n => n % 2 ? 'нечётные' : 'чётные')
group('a8-C!39', n => (
n.toLowerCase() !== n.toUpperCase() ? 'буква' :
!Number.isNaN(+n) ? 'цифра' :
'другое'
))
<input name="xxx" value="69">
<input name="xxx" value="187">
<input name="xxx" value="666">
<input name="yyy" value="-1">
group(document.querySelectorAll('input'), 'name', n => +n.value)
const newArr = [];
for (const n of arr) {
const [ us, s ] = n.us.split('-').map(n => n.split('_').map(Number));
newArr.push({
...n,
us: arr1.filter(n => us.includes(n)),
s,
});
}
const newArr = arr.map(function(n) {
const us = n.us.match(/\d+/g).map(n => +n);
const s = us.splice(-1);
return {
id: n.id,
us: this(us),
s,
};
}, us => arr1.filter(Set.prototype.has.bind(new Set(us))));
const url="http://example.com/roomUser/BootData.php";
fetch(url)
.then(response => response.json())
.then(BootData => {
console.log(BootData);
});
const url="http://example.com/roomUser/BootData.php";
fetch(url)
.then(response => response.json().then(BootData => {
console.log(BootData);
}));
|-|-||-|-|-|-|
, |
- это наш разделитель. Алгоритм идет слева направо, таким образом, когда он найдет первый элемент, в итоговый массив он положит всё, что левее этого символа, то есть пустую строку. Но тогда почему между слов встречается всего 1 «разрыв»? Это возникает из-за того, что разделитель встречается дважды. С последним элементом происходит схожий алгоритм действий, что и с первым, только в данном случае, в итоговый массив попадет оставшаяся правая часть. function userWin(val) {
return new Promise(function (resolve, reject) {
const par = [val.gold,val.xp,val.user];
const win = `UPDATE user SET monets = ${par[0]},exp = ${par[1]} WHERE uid = ${par[2]}`;
connection.query(win, (err, results) => {
if (err) reject(err);
resolve(results);
});
connection.end();
}).then(r => {
console.log(r)
})
}
function userWin(val) {
return new Promise(function (resolve, reject) {
const par = [val.gold,val.xp,val.user];
let monets = par[0],
exp = par[1];
const win = `UPDATE user SET ? WHERE uid = ${par[2]}`;
connection.query(win, {monets,exp}, (err, results) => {
if (err) reject(err);
resolve(results);
});
connection.end();
}).then(r => {
console.log(r)
})
}
function get(num) {
const level = arr.find(lvl => lvl[1] <= num && lvl[2] >= num)
if(!level) return 0
const [from, to] = [level[1], level[2]]
console.log(from, '->', num, '->', to)
const percent = (num - from) / (to - from) * 100 + '%'
return percent
}
get(1800)
// 850 "->" 1800 "->" 1849
// "95.09509509509509%"
<section>
<article>
<a href="#">1 ссылка</a>
</article>
</section>
const el = document.querySelector('a'); // находит первый подходящий элемент
const text = el.innerText;
const digitText = text.substring(0,1); // тут будет текст единичка
const digitNumber = +digitText; // тут уже число 1
span
так же:const el = document.querySelector('span'); // найдет самый первый элемент span в документе
<span>не нужный</span>
<div id="theone">
<span>300 спартанцев</span>
</div>
const span = div.querySelector('#theone span');
const arr = [
{uid: "55", ferstName: "Серега",sex:"2"},
{uid: "43", ferstName: "Марк",sex:"2"},
{uid: "73", ferstName: "Коля",sex:"2"},
{uid: "104", ferstName: "Женя",sex:"2"},
{uid: "23", ferstName: "Лена",sex: "1"},
{uid: "6", ferstName: "Татьяна",sex:"1"},
{uid: "93", ferstName: "Юлия",sex: "1"},
{uid: "62", ferstName: "Злата",sex: "1"},
];
function filterByIdAndSex(item) {
if (item.id == 73 || item.sex == 1) {
return false;
}
return true;
}
var resultArray = arr.filter(filterByIdAndSex);
console.log('Отфильтрованный массив\n', resultArray);