Javascript
Stack / 삼항연산자 / 스프레드 / Rest / Arguments 정의 및 Object 마음대로 갖고 놀기
Antonio Bae
2023. 7. 5. 11:32
스택/ 마음대로 활용하기
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>스택 개념정리</title>
</head>
<body>
<script>
//1.스택을 먼저 규정하기
//2.스택의 사용 모습을 보여줘!!
//3.문제를 해결해줘!
// length가 매우 중요함!! 할당제한!! 한정치 이상 들어가면 못넣게 막는 제한 장치가 무조건 필요함
// 자유를 주면 줄수록 그 프로그램이 계속 돌아갈 가능성이 커서 매우 위험함!!
// 기능 1.팝 2.push 3.length(길이제한) 등 구성요소를 먼저 그려라!
const stackArray = [];
function pushStack(anyItem) {
if (weightStack() > 50) {
alert("제한 용량초과");
} else {
stackArray.push(anyItem);
}
}
function popStack() {
return stackArray.pop();
}
function weightStack() {
return stackArray.length;
}
// 그 다음은 1.속성(팔,머리색 등) 2.메소드(동작)
// object는 무조건 한정을 해야함!!!(ex) 별, 물, 배열 등 셀수는 있으나 근사치만 구할수 있으므로
const inputString = prompt("문자 입력해주삼");
let targetString = [];
for (let i = 0; i < inputString.length; i++) {
pushStack(inputString[i]);
// inputString의 요소를 pushStack에 던지겠다
}
document.write("1.inputString:" + inputString + "<br>"); //한번씩 찍어볼것!!
document.write("2.stackArray:" + stackArray + "<br>");
// for (let i = 0; i < weightStack(); i++) {
// document.write("3.i가 빠짐" + weightStack() + "<br>")
// targetString += popStack();
// }
document.write("3.stackArray개수:"+weightStack()+ "<br>");
for (; ;) {
if (weightStack() == 0) { break; } else {
document.write("4. reverse:" + weightStack()+"번째 i가 빠짐" + "<br>")
targetString += popStack();
}
}
document.write("2.stackArray:" + stackArray + "<br>");
document.write("3.stackArray개수:"+weightStack()+ "개<br>");
document.write("5.reverse된 targetString:"+targetString+ "<br>");
if(inputString==targetString) {
document.write("Palindrome" + "<br>");
} else {
document.write("Not palindrome" + "<br>");
}
</script>
</body>
</html>
삼항연산자
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>상항연산자-조건별변수대입!!</title>
</head>
<body>
<script>
// 상항연산자: condition ? / truthy / falsy
let numValue = 6;
// numValue > 10? document.write("big"): document.write("small");
let resultString = numValue > 10? "big": "small";
document.write(resultString); //조건변 변수대입!!
const stackArray = [];
function pushStack(anyItem) {
if (weightStack() > 50) {
alert("제한 용량초과"+ "<br>");
} else {
stackArray.push(anyItem);
}
}
function popStack() {
return stackArray.pop();
}
function weightStack() {
return stackArray.length;
}
const inputString = prompt("문자 입력해주삼");
let targetString = [];
for (; ;) {
if (weightStack() == 0) { break; } else {
document.write("4. reverse:" + weightStack()+"번째 i가 빠짐" + "<br>")
targetString += popStack();
}
}
document.write("5.reverse된 targetString:"+targetString+ "<br>");
const resultString2 = inputString == targetString ? "Palindrome" : "Not Palindrom";
document.write(resultString2+"<br>");
</script>
</body>
</html>
스프레드 개념
https://poiemaweb.com/es6-extended-parameter-handling
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>EC6</title>
</head>
<body>
<script>
const valueA = " ZARD$010-4252-3498";
let valueB = [];
valueB = [...valueA];
document.write(valueB);
function sum(x, y) {
x = x || 0;
// 값이 없다면 0을 집어넣어
y = y || 0;
return x + y;
}
</script>
</body>
</html>
Rest
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>Rest</title>
</head>
<body>
<script>
// rest의 장점 파라미터 갯수가 많으면 어쩔건데?
// 파라미터 개수에 상관없이 제목만 기억하고 부를수 있도록 제목만 편하게 부르기 위한 문법!!
// ...이 파라미터 위치에 오면 rest문법
// rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받는다
function foo(...rest) {
console.log(Array.isArray(rest));
console.log(rest);
}
foo(1,2,3,4,5);
function bar(param1, ...rest){
console.log(param1);
}
bar(1,2,3,4,5);
// rest는 파라미터에 포함되지 않는다!!
function too(...rest) {}
console.log(too.length);//0
function qoo(x, ...rest) {}
console.log(qoo.length);//1
</script>
</body>
</html>
Arguments
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>arguments</title>
</head>
<body>
<script>
// spread문법은 ...) 대상을 개별 요소로 분리한다. spread 문법의 대상은 iterable 해야 한다.
function informationA(...memberId) {
document.write(memberId[0] + "<br>");
document.write(memberId[1] + "<br>");
document.write(memberId[2] + "<br>");
document.write(memberId[0] + memberId[1] + memberId[2]+ "<br>");
}
informationA(10, 20, 50); //arguments의 1,2,3
document.write("=====================" + "<br>");
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(...arr2); //arr1.push(4,5,6);
console.log(arr1);
document.write(arr1+ "<br>");
document.write("=====================" + "<br>");
// ES6
const arr4 = [1, 2, 3, 6];
const arr5 = [4, 5];
// ...arr5는 [4, 5]을 개별 요소로 분리한다
arr4.splice(3, 0, ...arr5); // == arr4.splice(3, 0, 4, 5);
document.write(arr4+ "<br>");
console.log(arr4); // [ 1, 2, 3, 4, 5, 6 ]
</script>
</body>
</html>
Object 1
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>lineArt</title>
</head>
<body>
<script>
const lineArt = {
'groupA': {
'daegeun':[0,1,2],
'chaerin':['a','b','c']
},
'groupB': ['F','M','C','G'],
'groupC': 1004
}
document.write(lineArt.groupA['daegeun']+"<br>");
document.write(lineArt['groupA']['daegeun']+"<br>");
document.write(lineArt.groupB[0]+"<br>");
document.write(lineArt.groupC+"<br>");
</script>
</body>
</html>
Object 2
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>grades</title>
</head>
<body>
<script>
var grades = {
'cemy': {'a':10, 'b':20, 'c':30},
'stormy': {'koko': 8, 'kiki':11},
'windy': {'hoho':22}
};
for(let fKey in grades) {
for(let sKey in grades[fKey]) {
document.write(grades[fKey][sKey]+"<br>");
}
}
</script>
</body>
</html>
Object 3
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>grades</title>
</head>
<body>
<script>
var grades = {
'cemy': [1004,1005,1006],
'stormy': [1007,1008],
'windy': [1009]
}
for(let fKey in grades) {
grades[fKey].forEach(function(v,i,a){
document.write(v + "<br>");
});
}
</script>
</body>
</html>
Object 4

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>grades</title>
</head>
<body>
<script>
var grades = [
{ 'ZARD': 'osaka', 'CDR': 'Ansan' },
{ 'balckpink': 'Seoul', 'IU': 'suwon', 'ive': 'singil' }
];
grades.forEach(function (v, i, a) {
for (let pName in v) {
document.write(pName + ": " + v[pName] + "<br>");
}
});
</script>
</body>
</html>