(SELECT DISTINCT(Name) AS storekeeperName FROM User, Waybill WHERE (Waybill.loginStorekeeper = User.login))
SELECT
Waybill.Id, Waybill.IMO, Vessel.Name, Waybill.loginManager, User.Name, Waybill.loginStorekeeper,
(SELECT DISTINCT(Name) AS storekeeperName FROM User, Waybill WHERE (Waybill.loginStorekeeper = User.login)) AS storekeeperName,
Waybill.Date
FROM Waybill, Vessel, User
WHERE (Waybill.IMO = Vessel.IMO)
AND (Waybill.loginManager = User.Login)
AND (Waybill.loginManager = User.Login)
ORDER BY Waybill.Id
Можно ли дойдя с помощью цикла до свойства hosts понять, что оно является объектом?
console.log(typeof({}));
// object
for (var key in data) {
if(typeof(data[key]) == "object") {
console.log (key + " is object");
}
}
Просто мне необходимо в этом случае, добавлять в тело цикла(или условия) после самого объекта(в данном случае data), или .объект или [свойство].
Кстати, с помощью какого метода, я смогу это всё добавлять? Мне нужно добавить либо data.hosts либо data[свойство]
data["hosts"][2] = {name: 'web3'}
data["hosts"][data["hosts"].length] = {name: 'web3'}
// или
data["hosts"].push( {name: 'web3'} );
const data = {
user: 'ubuntu',
hosts: {
0: {
name: 'web1',
},
1: {
name: 'web2',
null: 3,
},
},
};
// классически на if
function getIn(obj, parr) {
if(typeof(obj[parr[0]]) == "undefined") {
return null;
} else {
if(typeof(obj[parr[0]]) == "object") {
if(parr.length > 1) {
return getIn(obj[parr[0]], parr.slice(1))
} else {
return obj[parr[0]]
}
} else {
return obj[parr[0]];
}
}
}
// защита от дурака (когда некорректные параметры) + switch case
function getIn(obj, parr) {
if (
typeof(obj) != "object" ||
typeof(parr) != "object" ||
parr.length == "undefined" ||
parr.length == 0
) return null;
switch (typeof(obj[parr[0]])) {
case "undefined":
return null;
case "object":
return (parr.length > 1)? getIn(obj[parr[0]], parr.slice(1)):obj[parr[0]]
default:
return obj[parr[0]];
}
}
// еще короче
function getIn(obj, parr){
return !(
typeof(obj) != "object" ||
typeof(parr) != "object" ||
parr.length == "undefined" ||
parr.length == 0
)?
typeof(obj[parr[0]]) == "object" ?
(parr.length > 1)?
getIn(obj[parr[0]], parr.slice(1)):obj[parr[0]] :
obj[parr[0]] ?
obj[parr[0]]: null:
null
}
// и стрелочной функцией
const getIn = (obj, parr) => !(
typeof(obj) != "object" ||
typeof(parr) != "object" ||
parr.length == "undefined" ||
parr.length == 0
)?
typeof(obj[parr[0]]) == "object" ?
(parr.length > 1)? getIn(obj[parr[0]], parr.slice(1)):obj[parr[0]] :
obj[parr[0]] ? obj[parr[0]]:null :
null;
function getIn(obj, parr) {
let o = obj;
for(let i=0; i< parr.length; i++) {
o = o[parr[i]];
if(typeof(o)=="undefined") return null;
}
return o;
}
ALTER TABLE salary ALTER COLUMN salary_date SET DEFAULT current_date;
ALTER TABLE salary
ADD CONSTRAINT FK_Salary_Employee_ID FOREIGN KEY(employee_id)
REFERENCES EMPLOYEE(employee_id)
ON UPDATE CASCADE
ON DELETE CASCADE
$('.popup-button').on('click', function () {
$('.popup-thanks').fadeIn(),
$('.popup-callback').fadeOut();
});
$('.popup-thanks').fadeIn(),
$('.popup-callback').fadeOut();
$('.popup-button').on('click', function () {
if (
// проверка заполнения имени
$(".popup-input-name").val().length > 1 &&
// проверка корректного заполнения телефона
/^\+?7[ -]?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{2}[ -]?\d{2}$/.test( $(".popup-input-phone").val() ) &&
// проверка корректного заполнения e-mail
/^[a-z0-9\-\.]+@[a-z0-9\-\.]+\.[a-z]+$/i.test( $(".popup-input-mail").val() )
) {
$('.popup-thanks').fadeIn(),
$('.popup-callback').fadeOut();
} else {
alert ("Просьба корректно заполнить поля формы");
}
});
SELECT t1.*
FROM primary_tbl t1
LEFT JOIN second_tbl t2 ON t2.pid=t1.id
WHERE t2.pid IS NULL
AND t1.key='file_name'
$(".string_block:not(.row):nth-child(2n)").wrapAll("<div class='row' />");
$(".string_block:not(.row):nth-child(even)").wrapAll("<div class='row' />");
insmod png
background_image /grub/splash.png
### поиск раздела с grub
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 UUID=b5b64681-55f6-4345-8a96-c5704d4549fd
else
search --no-floppy --fs-uuid --set=root b5b64681-55f6-4345-8a96-c5704d4549fd
fi
### включение графического режима и загрузка фоновой картинки
if loadfont /grub/fonts/unicode.pf2 ; then
set gfxmode="640x480"
insmod gfxterm
insmod vbe
terminal_output gfxterm
if terminal_output gfxterm; then true ; else
terminal gfxterm
fi
# фоновая картинка
insmod png
background_image -m stretch /grub/splash.png
fi
###
set default="0"
set timeout=10
set timeout_style=menu
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### поиск раздела с grub
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 UUID=b5b64681-55f6-4345-8a96-c5704d4549fd
else
search --no-floppy --fs-uuid --set=root b5b64681-55f6-4345-8a96-c5704d4549fd
fi
### включение графического режима и загрузка фоновой картинки
if loadfont /grub/fonts/unicode.pf2 ; then
set gfxmode="640x480"
insmod gfxterm
insmod vbe
terminal_output gfxterm
if terminal_output gfxterm; then true ; else
terminal gfxterm
fi
# фоновая картинка
insmod png
background_image -m stretch /grub/splash.png
fi
###
menuentry 'Red Hat Enterprise Linux ES (2.6.9-5.ELsmp)' --class gnu-linux --class gnu --class os {
insmod ext2
set root='hd0,msdos1'
linux /vmlinuz-2.6.9-5.ELsmp ro root=/dev/sda6 quiet
initrd /initrd-2.6.9-5.ELsmp.img
}
menuentry 'Red Hat Enterprise Linux ES-up (2.6.9-5.EL)' --class gnu-linux --class gnu --class os {
insmod ext2
set root='hd0,msdos1'
linux /vmlinuz-2.6.9-5.EL ro root=/dev/sda6 quiet
initrd /initrd-2.6.9-5.EL.img
}
SELECT t.value, count(*) as users_count
FROM users u
JOIN (
SELECT d1.text as value, d1.user_id FROM data1 d1
UNION
SELECT d2.name as value, d2.user_id FROM data2 d2
) t on t.user_id = u.id
GROUP BY t.value
ORDER BY users_count DESC
quant: Number($(el).find('.cart-popup__calcdisp').find('span').text().replace(/[\s\n\t]/mg, "").replace(/,/mg, ".")),
let priceOfOne = $(el).find('.cart-popup__nums_one').find('span').text().replace(/[\s\n\t]/mg, "").replace(/,/mg, "."),
num = priceOfOne.toLowerCase().indexOf('руб'),