GOOGLE ADS

dimanche 1 mai 2022

Échec de la requête SQL Oracle DB

Problème avec une requête SQL.

La requête est la suivante :

SELECT employee_id,
last_name,
first_name,
TO_DATE('31-DEC-01') - hire_date as "days_with_company",
salary*12 as "annual_salary",
(CASE WHEN "days_with_company" < 720 THEN "annual_salary"*0.1
WHEN "days_with_company" >= 720 AND "days_with_company" < 1440 THEN "annual_salary"*0.2
ELSE "annual_salary"*0.3 END) as "bonus",
("annual_salary" + "bonus") as "total_compensation"
FROM employees;

Mais j'obtiens l'erreur suivante:

ORA-00904: "bonus": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 9 Column: 28

Lorsque je recherche l' erreur, il ne semble pas que je fasse quelque chose de mal !

S'il vous plaît donnez votre avis.


Solution du problème

"bonus" est généré dans la même instruction SQ dans laquelle vous essayez de l'utiliser. ("annual_salary" + "bonus") comme "total_compensation" Ce n'est pas autorisé. Ce qui suit le sépare dans une instruction select distincte.

WITH
aset
AS
(SELECT employee_id
, last_name
, first_name
, TO_DATE ('31-DEC-01') - hire_date AS "days_with_company"
, salary * 12 AS "annual_salary"
, (CASE
WHEN "days_with_company" < 720
THEN
"annual_salary" * 0.1
WHEN "days_with_company" >= 720
AND "days_with_company" < 1440
THEN
"annual_salary" * 0.2
ELSE
"annual_salary" * 0.3
END) AS "bonus"
FROM employees)
SELECT aset.*, ("annual_salary" + "bonus") AS "total_compensation"
FROM aset;

Et je réfléchirais à deux fois avant de placer tous les noms de colonnes entre guillemets doubles. Utilisez simplement la valeur par défaut d'Oracle. Oracle traite les noms d'objets en majuscules lorsqu'ils ne sont pas entre guillemets doubles, quelle que soit la casse. C'est simple, direct et élimine beaucoup d'agonie lorsque des cas mixtes se glissent.

Afficher la feuille lors du premier chargement de la fenêtre principale

J'essaie de charger une feuille lors du premier chargement de la fenêtre principale. Cette feuille est telle qu'elle demande à l'utilisateur un fichier afin qu'il soit en quelque sorte obligé d'ouvrir un fichier à utiliser dans le programme lors de son premier démarrage.

J'ai essayé de mettre performSegue(withIdentifier: sender:) dans viewDidLoad(), mais cela charge juste la feuille et rien d'autre.

override func viewDidLoad() {
super.viewDidLoad()
performSegue(withIdentifier: NSStoryboardSegue.Identifier(rawValue: "browse"), sender: self)
}

Je veux que la fenêtre principale se charge, puis que la feuille glisse vers le bas immédiatement après avoir demandé à l'utilisateur d'ouvrir un fichier.

Où dois-je mettre le performSegue ou y a-t-il une autre façon de faire cela ?


Solution du problème

@mschmidt a raison, je crois ; vous devrez effectuer la transition à partir de viewDidAppear()ou windowDidBecomeMain()ou similaire ; la vue doit avoir été affichée avant que vous puissiez en sortir.

Notez que cela viewDidAppear()se déclenchera lorsque la vue sera dessinée, qu'elle ait ou non le focus ; windowDidBecomeMain()ne se déclenchera que lorsque votre application deviendra l'application la plus visible ; vous travaillez peut-être dans une autre application, mais vous pouvez toujours voir les fenêtres de votre application à l'écran et, dans cet état, vous ne vous êtes peut-être windowDidBecomeMain()pas encore déclenché.

Et oui, les deux viewDidAppear()et windowDidBecomeMain()se déclencheront à chaque fois que la vue apparaîtra ou que la fenêtre deviendra principale, ce qui signifie que si vous réduisez l'application puis la réduisez, les deux se déclencheront à nouveau. Vous aurez donc besoin d'un moyen de vous assurer que votre séquence ne s'affiche pas à chaque fois, sauf si vous le souhaitez. Un simple drapeau booléen, par exemple segueHasShown, devrait y parvenir.

Bouton de navigation basé sur une valeur de liste déroulante PowerApps

J'ai essayé de définir des listes déroulantes obligatoires à sélectionner pour passer à l'écran suivant.


  • L'écran suivant s'appelle Fin

  • La liste déroulante s'appelle type_4


C'est le code que j'ai utilisé mais il ne semble pas passer:

If(
IsBlank(type_4.Selected.Value),
Notify("Fill all the fields to continue", NotificationType.Error),
Navigate(End,ScreenTransition.Cover) )

Ce problème est spécifique aux entrées déroulantes. S'il s'agissait d'un champ de texte, je ne fais que remplacer Selected.Value par Text et cela fonctionne bien. Les listes déroulantes sont mon seul problème jusqu'à présent.

EDIT : La valeur par défaut des listes déroulantes est Sélectionnez votre réponse (premier choix de la liste déroulante).


Solution du problème

Si l'option par défaut de votre menu déroulant est "Sélectionnez votre réponse", vous pouvez utiliser une expression similaire à celle ci-dessous :

If(
type_4.Selected.Value = "Select your answer",
Notify("Fill all the fields to continue", NotificationType.Error),
Navigate(End,ScreenTransition.Cover) )

Réduire le nombre de flèches dans geom_segment R

J'essaie de tracer une figure qui montre la relation entre xet yainsi que la direction de la courbe. Voici des exemples de données enregistrées sousdata.csv :

date,x,y
2000-01-01,0.373,0
2000-01-02,0.370,0
2000-01-03,0.370,0
2000-01-04,0.370,0
2000-01-05,0.370,0
2000-01-06,0.370,0
2000-01-07,0.370,0
2000-01-08,0.370,0
2000-01-09,0.368,0
2000-01-10,0.365,0
2000-01-11,0.362,0
2000-01-12,0.360,0
2000-01-13,0.357,0
2000-01-14,0.355,0
2000-01-15,0.353,0
2000-01-16,0.351,0
2000-01-17,0.347,0
2000-01-18,0.344,0
2000-01-19,0.340,0
2000-01-20,0.338,0
2000-01-21,0.334,0
2000-01-22,0.331,0
2000-01-23,0.328,0
2000-01-24,0.324,0
2000-01-25,0.325,0.002
2000-01-26,0.323,0
2000-01-27,0.323,0
2000-01-28,0.321,0
2000-01-29,0.321,0
2000-01-30,0.327,0.009
2000-01-31,0.325,0
2000-02-01,0.325,0.001
2000-02-02,0.349,0.037
2000-02-03,0.350,0.039
2000-02-04,0.351,0.041
2000-02-05,0.353,0.043
2000-02-06,0.355,0.046
2000-02-07,0.363,0.059
2000-02-08,0.372,0.072
2000-02-09,0.377,0.079
2000-02-10,0.380,0.083
2000-02-11,0.381,0.086
2000-02-12,0.383,0.087
2000-02-13,0.384,0.089
2000-02-14,0.385,0.091
2000-02-15,0.386,0.092
2000-02-16,0.387,0.094
2000-02-17,0.388,0.095
2000-02-18,0.391,0.1
2000-02-19,0.393,0.102
2000-02-20,0.393,0.103
2000-02-21,0.394,0.104
2000-02-22,0.394,0.105
2000-02-23,0.395,0.105
2000-02-24,0.395,0.106
2000-02-25,0.395,0.106
2000-02-26,0.396,0.107
2000-02-27,0.396,0.107
2000-02-28,0.404,0.119
2000-02-29,0.405,0.12
2000-03-01,0.405,0.12
2000-03-02,0.405,0.121
2000-03-03,0.405,0.121
2000-03-04,0.405,0.121
2000-03-05,0.405,0.121
2000-03-06,0.406,0.122
2000-03-07,0.408,0.126
2000-03-08,0.413,0.133
2000-03-09,0.414,0.134
2000-03-10,0.416,0.138
2000-03-11,0.417,0.138
2000-03-12,0.417,0.138
2000-03-13,0.417,0.138
2000-03-14,0.417,0.138
2000-03-15,0.418,0.14
2000-03-16,0.422,0.147
2000-03-17,0.427,0.153
2000-03-18,0.431,0.159
2000-03-19,0.434,0.164
2000-03-20,0.439,0.172
2000-03-21,0.445,0.18
2000-03-22,0.445,0.18
2000-03-23,0.445,0.18
2000-03-24,0.445,0.18
2000-03-25,0.445,0.18
2000-03-26,0.445,0.18
2000-03-27,0.445,0.18
2000-03-28,0.445,0.18
2000-03-29,0.447,0.184
2000-03-30,0.448,0.185
2000-03-31,0.448,0.185
2000-04-01,0.448,0.185
2000-04-02,0.448,0.185
2000-04-03,0.449,0.185
2000-04-04,0.449,0.185
2000-04-05,0.449,0.185
2000-04-06,0.449,0.185
2000-04-07,0.449,0.186
2000-04-08,0.449,0.187
2000-04-09,0.450,0.188
2000-04-10,0.451,0.19
2000-04-11,0.452,0.191
2000-04-12,0.453,0.192
2000-04-13,0.454,0.193
2000-04-14,0.454,0.194
2000-04-15,0.455,0.195
2000-04-16,0.456,0.196
2000-04-17,0.456,0.197
2000-04-18,0.457,0.197
2000-04-19,0.457,0.198
2000-04-20,0.457,0.199
2000-04-21,0.458,0.199
2000-04-22,0.458,0.2
2000-04-23,0.458,0.2
2000-04-24,0.459,0.2
2000-04-25,0.459,0.201
2000-04-26,0.459,0.201
2000-04-27,0.459,0.201
2000-04-28,0.459,0.202
2000-04-29,0.460,0.202
2000-04-30,0.460,0.202
2000-05-01,0.460,0.202
2000-05-02,0.460,0.203
2000-05-03,0.461,0.203
2000-05-04,0.463,0.207
2000-05-05,0.463,0.207
2000-05-06,0.463,0.207
2000-05-07,0.464,0.208
2000-05-08,0.464,0.209
2000-05-09,0.464,0.209
2000-05-10,0.464,0.209
2000-05-11,0.464,0.209
2000-05-12,0.465,0.209
2000-05-13,0.465,0.209
2000-05-14,0.466,0.211
2000-05-15,0.469,0.215
2000-05-16,0.469,0.215
2000-05-17,0.470,0.217
2000-05-18,0.470,0.217
2000-05-19,0.470,0.217
2000-05-20,0.470,0.217
2000-05-21,0.470,0.217
2000-05-22,0.470,0.217
2000-05-23,0.470,0.217
2000-05-24,0.470,0.217
2000-05-25,0.470,0.218
2000-05-26,0.473,0.221
2000-05-27,0.474,0.223
2000-05-28,0.474,0.223
2000-05-29,0.474,0.223
2000-05-30,0.474,0.223
2000-05-31,0.474,0.223
2000-06-01,0.474,0.223
2000-06-02,0.474,0.223
2000-06-03,0.474,0.223
2000-06-04,0.474,0.223
2000-06-05,0.474,0.223
2000-06-06,0.474,0.223
2000-06-07,0.474,0.223
2000-06-08,0.474,0.224
2000-06-09,0.476,0.226
2000-06-10,0.476,0.226
2000-06-11,0.477,0.228
2000-06-12,0.479,0.23
2000-06-13,0.480,0.233
2000-06-14,0.482,0.236
2000-06-15,0.484,0.238
2000-06-16,0.486,0.241
2000-06-17,0.488,0.244
2000-06-18,0.490,0.247
2000-06-19,0.492,0.25
2000-06-20,0.494,0.253
2000-06-21,0.496,0.256
2000-06-22,0.498,0.259
2000-06-23,0.500,0.261
2000-06-24,0.501,0.263
2000-06-25,0.502,0.265
2000-06-26,0.504,0.267
2000-06-27,0.505,0.269
2000-06-28,0.507,0.272
2000-06-29,0.514,0.283
2000-06-30,0.517,0.287
2000-07-01,0.519,0.29
2000-07-02,0.521,0.293
2000-07-03,0.523,0.297
2000-07-04,0.539,0.321
2000-07-05,0.548,0.333
2000-07-06,0.556,0.346
2000-07-07,0.564,0.358
2000-07-08,0.574,0.372
2000-07-09,0.582,0.385
2000-07-10,0.594,0.403
2000-07-11,0.611,0.429
2000-07-12,0.624,0.448
2000-07-13,0.637,0.469
2000-07-14,0.653,0.492
2000-07-15,0.664,0.509
2000-07-16,0.673,0.524
2000-07-17,0.682,0.536
2000-07-18,0.689,0.547
2000-07-19,0.698,0.56
2000-07-20,0.720,0.595
2000-07-21,0.732,0.614
2000-07-22,0.742,0.628
2000-07-23,0.749,0.638
2000-07-24,0.754,0.646
2000-07-25,0.759,0.653
2000-07-26,0.764,0.661
2000-07-27,0.770,0.669
2000-07-28,0.773,0.674
2000-07-29,0.775,0.676
2000-07-30,0.777,0.679
2000-07-31,0.784,0.691
2000-08-01,0.787,0.695
2000-08-02,0.788,0.696
2000-08-03,0.787,0
2000-08-04,0.791,0.019
2000-08-05,0.801,0.069
2000-08-06,0.807,0.097
2000-08-07,0.811,0.118
2000-08-08,0.812,0.121
2000-08-09,0.812,0
2000-08-10,0.810,0
2000-08-11,0.806,0
2000-08-12,0.801,0
2000-08-13,0.794,0
2000-08-14,0.795,0.004
2000-08-15,0.791,0
2000-08-16,0.786,0
2000-08-17,0.782,0
2000-08-18,0.777,0
2000-08-19,0.774,0
2000-08-20,0.773,0
2000-08-21,0.771,0
2000-08-22,0.768,0
2000-08-23,0.765,0
2000-08-24,0.761,0
2000-08-25,0.756,0
2000-08-26,0.749,0
2000-08-27,0.744,0
2000-08-28,0.738,0
2000-08-29,0.735,0
2000-08-30,0.731,0
2000-08-31,0.727,0
2000-09-01,0.723,0
2000-09-02,0.718,0
2000-09-03,0.713,0
2000-09-04,0.707,0
2000-09-05,0.706,0
2000-09-06,0.704,0
2000-09-07,0.698,0
2000-09-08,0.691,0
2000-09-09,0.684,0
2000-09-10,0.676,0
2000-09-11,0.670,0
2000-09-12,0.665,0
2000-09-13,0.663,0
2000-09-14,0.664,0.002
2000-09-15,0.660,0
2000-09-16,0.660,0
2000-09-17,0.665,0.014
2000-09-18,0.661,0
2000-09-19,0.656,0
2000-09-20,0.650,0
2000-09-21,0.642,0
2000-09-22,0.634,0
2000-09-23,0.629,0
2000-09-24,0.632,0.008
2000-09-25,0.627,0
2000-09-26,0.623,0
2000-09-27,0.632,0.026
2000-09-28,0.625,0
2000-09-29,0.621,0
2000-09-30,0.618,0
2000-10-01,0.612,0
2000-10-02,0.606,0
2000-10-03,0.600,0
2000-10-04,0.594,0
2000-10-05,0.587,0
2000-10-06,0.580,0
2000-10-07,0.571,0
2000-10-08,0.563,0
2000-10-09,0.556,0
2000-10-10,0.549,0
2000-10-11,0.542,0
2000-10-12,0.534,0
2000-10-13,0.530,0
2000-10-14,0.522,0
2000-10-15,0.516,0
2000-10-16,0.509,0
2000-10-17,0.501,0
2000-10-18,0.498,0
2000-10-19,0.496,0
2000-10-20,0.488,0
2000-10-21,0.480,0
2000-10-22,0.474,0
2000-10-23,0.469,0
2000-10-24,0.468,0
2000-10-25,0.466,0
2000-10-26,0.459,0
2000-10-27,0.452,0
2000-10-28,0.444,0
2000-10-29,0.437,0
2000-10-30,0.430,0
2000-10-31,0.427,0
2000-11-01,0.419,0
2000-11-02,0.410,0
2000-11-03,0.401,0
2000-11-04,0.392,0
2000-11-05,0.383,0
2000-11-06,0.374,0
2000-11-07,0.367,0
2000-11-08,0.361,0
2000-11-09,0.355,0
2000-11-10,0.348,0
2000-11-11,0.342,0
2000-11-12,0.335,0
2000-11-13,0.327,0
2000-11-14,0.320,0
2000-11-15,0.313,0
2000-11-16,0.306,0
2000-11-17,0.301,0
2000-11-18,0.294,0
2000-11-19,0.287,0
2000-11-20,0.279,0
2000-11-21,0.271,0
2000-11-22,0.262,0
2000-11-23,0.252,0
2000-11-24,0.244,0
2000-11-25,0.237,0
2000-11-26,0.230,0
2000-11-27,0.222,0
2000-11-28,0.215,0
2000-11-29,0.209,0
2000-11-30,0.204,0
2000-12-01,0.197,0
2000-12-02,0.190,0
2000-12-03,0.183,0
2000-12-04,0.175,0
2000-12-05,0.168,0
2000-12-06,0.163,0
2000-12-07,0.159,0
2000-12-08,0.157,0
2000-12-09,0.156,0
2000-12-10,0.152,0
2000-12-11,0.149,0
2000-12-12,0.146,0
2000-12-13,0.143,0
2000-12-14,0.139,0
2000-12-15,0.135,0
2000-12-16,0.130,0
2000-12-17,0.125,0
2000-12-18,0.121,0
2000-12-19,0.117,0
2000-12-20,0.117,0
2000-12-21,0.114,0
2000-12-22,0.118,0.005
2000-12-23,0.117,0
2000-12-24,0.115,0
2000-12-25,0.111,0
2000-12-26,0.106,0
2000-12-27,0.100,0
2000-12-28,0.094,0
2000-12-29,0.087,0
2000-12-30,0.083,0
2000-12-31,0.079,0

J'ai utilisé le code suivant pour tracer la relation entre xet yavec des flèches pour montrer la direction de la courbe

library(ggplot2)
data <- read.csv('data.csv')
ggplot(data,aes(x = x,y = y)) +
geom_segment(aes(xend=c(tail(x, n=-1), NA), yend=c(tail(y, n=-1), NA)),size=0.5,
arrow=arrow(length=unit(0.1,"in"),type = 'open'))

La figure résultante ressemble à ceci:
Courbe avec flèches

Le nombre de flèches est assez élevé, ce qui rend la visualisation un peu difficile, surtout lorsque plus de facettes (plus de points de données) sont incluses. J'ai besoin de réduire le nombre de flèches pour rendre la courbe un peu nette. Je sais que je peux réduire le nombre de points de données, mais j'ai besoin de tous les points de données et je dessine simplement le point de la flèche each n.

Y a-t-il une manière ordonnée de faire ceci?


Solution du problème

Voici une façon de ne dessiner qu'une flèche sur dix. La couleur du segment est mappée à une variable manquante 9 fois, puis noire une fois, qui se répète ensuite pour la longueur de x. Le geom_pathajoute ensuite la ligne d'origine par-dessus.

J'ai essayé d'utiliser un sous-ensemble de données, mais cela a déplacé la ligne près des coins.

J'espère que vous pourrez affiner cela pour choisir un ensemble de flèches qui a l'air sympa.

ggplot(dat,aes(x = x,y = y)) +
scale_color_identity()+
geom_segment(aes(col=rep(c(rep(NA,9),"black"),100)[seq_along(x)],
xend=c(tail(x, n=-1), NA), yend=c(tail(y, n=-1), NA)),
size=0.5,
arrow=arrow(length=unit(0.1,"in"),type = 'open'))+
geom_path()

entrez la description de l'image ici

Positionnement du flux de documents absolu et permanent

Existe-t-il un moyen en CSS de positionner un élément quelque chose comme absolu (par rapport à l'élément parent), par exemple au bas de son élément parent, mais qu'il reste toujours dans le flux de documents ?

Par exemple. qu'un élément, positionné par rapport au-dessus de l'élément, en prenant plus de hauteur, pousse l'élément "absolu" vers le bas tandis que la hauteur de l'élément-conteneur augmente également au moment où l'élément relatif "toucherait" l'absolu mais d'un autre côté le " la position absolue" des éléments et la hauteur des éléments conteneurs ne changeront pas s'il n'y a pas de "touche" ?

Ou est-ce juste une tâche impossible et ne peut être fait qu'avec javascript?


Solution du problème

Vous pouvez positionner un div absolu par rapport au parent si vous forcez

position: relative;

sur la div mère. Sinon, l'absolu se positionnera par rapport au document.

<div style="position:relative;">
<div style="position:absolute; top:10px; right:10px;">
................
</div>
</div>

Cela n'aura pas l'effet d'étirement que vous souhaitez, mais si vous voulez le type de comportement de bloc que vous décrivez, quel est le problème avec le flottement et l'application de marges ?

<div style="position:relative;">
<div style="float: right; margin-top:10px; margin-right:10px;">
................
</div>
<div>text</div>
</div>

Tant que vous effacez correctement la div parente, le contenu flottant ou le contenu normal de la div ci-dessus peut déterminer la hauteur de l'élément parent.

Si vous avez également besoin d'un alignement vers le bas, vous pouvez regarder dans display: table-cell en option (ne fonctionne pas sur IE7)

Unexpected Promise.all() échoue comportement rapide - continue à s'exécuter après le rejet

Depuis MDN:

Promise.all est rejeté si l'un des éléments est rejeté. Par exemple, si vous transmettez quatre promesses qui se résolvent après un délai d'attente et une promesse qui est rejetée immédiatement, Promise.all sera immédiatement rejetée.

Discutons de l'extrait de code suivant :


(async () => {
try {
const awaited = await Promise.all([
(() => {
console.log('1');
return Promise.reject('2');
})(),
(() => {
console.log('3');
return Promise.resolve('4');
})(),
]);
console.log(awaited);
} catch (error) {
console.log(error);
} finally {
console.log('5');
}
})();

Solution du problème

Au lieu de cela, je vois un '3' également enregistré. Pourquoi en est-il ainsi?

Toutes les autres réponses tentent d'expliquer comment fonctionnent les promesses ou la boucle d'événements, mais en fait cela n'a rien à voir avec celles-ci.

L'argument que vous transmettez Promise.allest un tableau qui contient les résultats de deux appels de fonction. Par conséquent, les deux fonctions seront appelées avant Promise.alll'appel. Les deux fonctions console.logune valeur et renvoient ensuite une promesse.
Promise.allreçoit un tableau contenant ces promesses. Donc, avant de Promise.allfaire quoi que ce soit, les deux fonctions ont déjà été exécutées et enregistrées 1et 3respectivement.

Il est peut-être plus facile de vous voir restructurer votre code pour créer les promesses en amont :

(async () => {
try {
const promise1 = (() => {
console.log('1');
return Promise.reject('2');
})();
const promise2 = (() => {
console.log('3');
return Promise.resolve('4');
})()
const awaited = await Promise.all([promise1, promise2]);
console.log(awaited);
} catch (error) {
console.log(error);
} finally {
console.log('5');
}
})();

Comme pour toute autre fonction, tous les arguments de la fonction sont évalués avant que la fonction elle-même ne soit appelée. L'ordre des événements est plutôt celui-ci:

  • Le premier console.log est exécuté, enregistrant ainsi '1';

  • La promesse rejetée avec 2est créée.

  • Le second console.log est exécuté, enregistrant ainsi '3';

  • Promesse tenue avec 4est créé.

  • Un tableau contenant les deux promesses est créé.

  • Promise.all est appelé avec un tableau de promesses en paramètre.

  • Promise.all traite les promesses.

  • La clause 'catch' est exécutée, enregistrant la valeur rejetée de '2' ;

  • La clause 'Finalement' est exécutée quoi qu'il en soit, en enregistrant '5' ;

  • Voici un exemple plus simple : notez que rien n'est "fait" avec le deuxième argument passé à la fonction et pourtant la valeur est toujours enregistrée, précisément parce que tous les arguments sont évalués en premier :


    function process(arg) {
    return 'Received ' + arg;
    }
    const result = process(
    (() => {
    console.log('1');
    return 1;
    })(),
    (() => {
    console.log('3');
    return 2;
    })(),
    );
    console.log(result)

    Comment puis-je sélectionner plusieurs éléments qui sont les descendants de l'élément parent en CSS ? [dupliquer]

    Cette question a déjà des réponses ici:


    Solution du problème

    Je suggérerais d'utiliser la :is()syntaxe - relativement nouvelle - :


    *,
    ::before,
    ::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    }
    .container {
    border: 0.3em solid rebeccapurple;
    margin-block: 1em;
    margin-inline: auto;
    width: clamp(30em, 50vw, 600px);
    }
    .container:is(h3, p) {
    border: 1px solid #000;
    color: rebeccapurple;
    margin-block: 1em;
    margin-inline: auto;
    padding-inline: 1em;
    width: 80%;
    }

    <h3>A &lt;h3&gt; element, that should probably be a &lt;h2&gt;</h3>
    <div class="container">
    <h3>A properly-used, and selected, &lt;h3&gt; element</h3>
    <p>...and an adjacent &lt;p&gt; element.</p>
    </div>
    <p>Some text in a paragraph that shouldn't be styled.</p>

    Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

    Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...