210419_배열(Array)
배열(Array)
"list-like objects"
배열은 순서가 있는 값
대괄호(square bracket) 이용 배열 만듬
순서는 인덱스(index)라고 부르며, 1이 아닌 0부터 번호를 매김
각각의 원소(element)는 쉼표(comma)로 구분
shopping list in an array.
let shopping = ['bread', 'milk', 'cheese', 'hummus', 'noodles'];
shopping;
let sequence = [1, 1, 2, 3, 5, 8, 13];
let random = ['tree', 795, [0, 1, 2]];
store various data types — strings, numbers, objects, and even other arrays. We can also mix data types in a single array
Accessing and modifying array items
accessing individual items in the array using bracket notation
shopping[0]; // returns "bread"
modifying an item in an array by giving a single array item a new value.
shopping[0] = 'tahini';
shopping; // shopping will now return [ "tahini", "milk", "cheese", "hummus", "noodles" ]
an array inside an array is called a multidimensional array.
random[2][2];
Finding the length of an array
shopping.length; // should return 5
<loop through all the items in an array>
let sequence = [1, 1, 2, 3, 5, 8, 13];
for (let i = 0; i < sequence.length; i++) {
console.log(sequence[i]);
}
[] === [] //false [1,2,3] === [1,2,3] //false
서로 다른 배열
빈 배열 확인 방법
- arr.length === 0
- !arr.length // true;
arr.length is 0, or false---> with '!' + returns true.
checking an array--freecodecamp
Array() constructor
create Array objects.
1) 호출 인자(or parameter)가 1개, 숫자인 경우
호출인자를 length로 갖는 빈 배열 생성
// 빈 배열 생성
var testArray = new Array(2);
console.log(testArray); // [empty X 2]
console.log(testArray.length); //2
console.log(testArray[0]; //undefined
2) 호출 인자를 요소로 갖는 배열 생성
// 호출 인자를 통한 배열 생성
var testArray = new Array(1, 2, 3);
console.log(testArray); // (3) [1, 2, 3]
console.log(testArray.length); // 3
배열 요소 생성
-
배열의 요소를 동적으로 추가할 수 있다
-
특히 자바스크립트의 배열은 순차적으로 넣지 않아도 값을 추가할 수 있다.
-
배열에 숫자, 문자, 불린값들을 마음대로 혼용하여 사용할 수 있다.
-
배열의 인덱스는 가장 큰 값을 기준으로 정하게 된다.
// 빈 배열 생성 (대괄호만 사용시 요소 없는 빈 배열이 생성된다.) var testArray = [];
// 배열 요소 생성
testArray[0] = 1;
testArray[3] = 'god';
testArray[5] = false;
console.log(testArray); // [1, undefined, undefined, "god", undefined, false]
console.log(testArray.length); // 6
Converting between strings and arrays
- str.split(" ").join(" ") : 분리하여 array 만들고, 다시 합친다.
let myData = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
let myArray = myData.split(','); // 나눠서 어레이에 담아줌
myArray; // ["Manchester", "London", "Liverpool", "Birmingham", "Leeds", "Carlisle"]
myArray.length;
myArray[0]; // the first item in the array
myArray[1]; // the second item in the array
myArray[myArray.length-1]; // the last item in the array
go the opposite way using the join() method.
let myNewString = myArray.join(','); //합해서 스트링으로
myNewString; // "Manchester,London,Liverpool,Birmingham,Leeds,Carlisle"
- toString()
simpler than join() as it doesn't take a parameter, but more limiting.
always uses a comma.
let dogNames = ['Rocket','Flash','Bella','Slugger'];
dogNames.toString(); // Rocket,Flash,Bella,Slugger
console.tabel()
Adding and removing array items
- 온점(dot)을 이용해서 변수가 가지고 있는 속성(property)에 접근할 수 있습니다.
- 온점(dot)을 이용해서 관련된 명령(method라고 부릅니다)도 실행할 수 있습니다.
명령을 실행할 때는, 함수를 실행하듯 괄호를 열고 닫는 형태로 실행합니다.(함수니게)
.push() : 마지막에 element 추가
return arr.push(a); // array의 length 리턴(원본변경)
.pop() : 마지막 element 삭제
return arr.pop(a); // 삭제한 element 리턴
.unshift() : 처음에 element 추가
return arr.unshift(a); // array의 length 리턴(원본변경)
.shift() : 마지막에 element삭제
return arr.ushift(a); // 삭제한 element 리턴(원본변경)
.concat() : merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.
.splice() :
changes the contents of an array by removing or replacing existing elements and/or adding new elements in place.
fruits.splice(start[, how much]); //시작 인덱스부터 몇개나 지울지, 지정안하면 [0]번째것 빼고 다 삭제
.splice(1,1,'a','b'); // 1번째 인덱스 하나 지워진 자리에 저거 두개 추가됨
<length 이용 값 추가, 삭제 가능>
배열 내 가장 큰 인덱스에 1을 더한 값으로 볼 수 있다.
배열의 length 프로퍼티는 코드를 통해 명시적으로 값을 변경할 수도 있다.
1) length 값을 늘리는 경우 : 메모리 할당 되지 않은 명시적인 빈 공간만 추가(undefined) 된다.
2) length 값을 줄이는 경우 : 6 => 4, index 5번째, 6번째 값이 삭제_ 된다.
// 빈 배열 생성 (대괄호만 사용시 요소 없는 빈 배열이 생성된다.) var testArray = []; // 배열 요소 생성
testArray[0] = 1;
testArray[3] = 'god';
testArray[5] = false;
console.log(testArray); // [1, undefined, undefined, "god", undefined, false]
console.log(testArray.length); // 6
testArray.length = 4;
console.log(testArray); // [1, undefined, undefined, "god"]
testArray.push("dae"); // 마지막 요소에 "dae"가 추가 된다. console.log(testArray); // [1, undefined, undefined, "god", "dae"]
testArray.length = 7; // length를 5 => 7로 늘렸다. testArray.push("hee"); // length로 늘어난 인덱스 뒤의 인덱스에 값이 추가 된다.
console.log(testArray); // [1, undefined, undefined, "god", "dae", undefined, undefined, "hee"]
배열도 객체이기 때문에 프로퍼티를 가질 수 있고(그렇기 때문에 length 라는 프로퍼티를 갖고 있다.) 추가할 수도 있다.
// 프로퍼티 추가
testArray.name = "테스트객체 이름";
console.log(testArray.length); // 8
testArray.age = 15;
console.log(testArray.length); // 8
delete array[index]
배열도 객체 이기 때문에 delete 연산자를 사용할 수 있다.
요소를 삭제 하더라도 length가 바뀌진 않는다. (요소만 undefined로 바꾼다.)
Copy an Array
let shallowCopy = fruits.slice() // this is how to make a copy 자를것 아무것도 정하지 않으면 그대로 복사됨
// ["Strawberry", "Mango"]
값이 배열에 포함되어 있는지 확인
.indexOf() : 있으면 그 엘리멘트의 인덱스 / 없으면 –1 리턴
.indexOf() !== -1 // true or false //---------->있는지 없는지 boolean으로 확인가능
lastIndexOf()
indexOf() 이용 true or false 만들때
function hasElement(arr, element) {
let isPresent = arr.indexOf(element) !== -1;
return isPresent
}
.includes() : 존재 여부 true false 만 알수 있다. +호환성문제로 (indexOf() 선호)
Array.isArray() : 특정 값이 배열인지 아닌지 판별
- array의 이름, 엘리멘트들 상관없이 array면 다 true 리턴
Looping over an array
*for
for(let i =0; i < fruits.length; i++){
console.log(fruits[i]);
}
*for of
for(let fruit of fruits){ //임이의 변수 fruit에 fruits의 엘리먼트들 할당
console.log(fruit);
}
*foreach //배열안에 들어있는 value들마다 내가 전달한 함수로 출력
fruits.forEach((fruit) => console.log(fruit)); //All fruits return
fruits.forEach(function(fruit, index, array){ //이것이 위로 arrowfunction으로
console.log(fruit, index, array);
}
---------------------------------------------------
- 문법 : arr.forEach(callback(value [, index [, array]])[, thisArg]);
- callback : 각 요소에 대해 실행할 콜백 함수 이다.
- value : 처리할 현재 요소.
- index (Optional) : 처리할 현재 요소의 인덱스.
- array (Optional) : forEach()를 호출한 배열.
- thisArg (Optional)- callback을 실행할 때 this로 사용할 값.
전달하지 않으면 undefined를 사용하며, 최종 this 값은 함수의 this를 결정하는 평소 규칙을 따른다.
- 화살표 함수도 가능 하다.
.reverse();
배열 요소 순서를 반대로 변경한다.
let a = ['a', 'b', 'c'];
let b = a.reverse();
console.log(a); // ["c", "b", "a"]
console.log(b); // ["c", "b", "a"]
Creating an interesting array
let msgArray = []
msgArray[0] = 'Hello'
msgArray[99] = 'world'
if (msgArray.length === 100) {
console.log('The length is 100.')
}
The following creates a chessboard as a two-dimensional array of strings. The first move is made by copying the 'p' in board[6][4] to board[4][4]. The old position at [6][4] is made blank.
let board = [
['R','N','B','Q','K','B','N','R'],
['P','P','P','P','P','P','P','P'],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
['p','p','p','p','p','p','p','p'],
['r','n','b','q','k','b','n','r'] ]
console.log(board.join('\n') + '\n\n')
// Move King's Pawn forward 2
board[4][4] = board[6][4]
board[6][4] = ' '
console.log(board.join('\n'))
Here is the output:
R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r
R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
, , , , , , ,
, , , , , , ,
, , , ,p, , ,
, , , , , , ,
p,p,p,p, ,p,p,p
r,n,b,q,k,b,n,r
Using an array to tabulate a set of values
values = []
for (let x = 0; x < 10; x++){
values.push([
2 ** x,
2 * x ** 2
])
}
console.table(values)
Results in
// The first column is the index
0 1 0
1 2 2
2 4 8
3 8 18
4 16 32
5 32 50
6 64 72
7 128 98
8 256 128
9 512 162
Author And Source
이 문제에 관하여(210419_배열(Array)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nala723/210419배열Array저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)