2070 / JS / Масиви

 

let arr = ["Mercedes-Benz", "Tesla", "BMW"]
let c = [5, 3, 2, 4] // c[0] = 5
let numbers = ["Андрій", 2, 3.14, "A"];
let numbers = [1, 2, 3, 4];
console.log(...numbers); // 1 2 3 4
console.log(numbers); // [1, 2, 3, 4]

 
Двовимірний
let numbers = [[0, 2, 4], [1, 3, 5] ] // numbers[1][1] = 3
let m = 4, n = 4;
let mas = [];
for (let i = 0; i < m; i++)
{
  mas[i] = [];
  for (let j = 0; j < n; j++)
  {
    mas[i][j] = 0;
  }
}

let people = [
  ["Олександр", 15, false],
  ["Дмитро", 20, true],
  ["Тарас", 30, true]
]
people[1] // Дмитро,20,true
people[1][0] // Дмитро

 
Тривимірний
var numbers = []
numbers[0] = []
numbers[0][0]=[]
numbers[0][0][0] = 3

 
Властивості
arr.length - кількість елементів
arr.constructor - якщо це масив: function Array() { [native code] }, або Number чи String

 
Додаємо нові властивості та методи в масив
Array.prototype.velykiBukvy = function() {
  for (let i = 0; i < this.length; i++) { this[i] = this[i].toUpperCase() }
}
arr.velykiBukvy() // MERCEDES-BENZ, VOLVO, BMW

Рядок перетворити в масив
let arr = str.split('');

 
Масив перетворити в рядок
let str = arr.join('');

Методи
var arr = txt.split(",") - розбити текст на масив рядків
var arr = arr.concat(arr2) - об'єднати
arr.pop() - видаляє останній елемент
arr.push("7") - вставляє в кінець; повертає нову довжину
arr.push("8", "9")
arr.shift() - видаляє [0] елемент; повертає значення що видаляється
arr.unshift("1") - вставляє на початок; повертає нову довжину
arr = arr.slice(0, 3) - залишити [0], [1], [2]; (початок, кінець) останній елемент не включно
arr.join() - об'єднує елементи масиву в рядок: Mercedes-Benz, Tesla, BMW
arr.join(" * ") // 2 * 3 * 4 * 7
delete arr[1] - не видаляє комірку; затирає значення; краще pop() чи shift()
arr.valueOf() - повертає копію масиву без зміни оригіналу
var a = [2, 4, 6, 4]
a.indexOf(4) // 1
a.indexOf(4, 3) // 3
a.indexOf(10) // -1
a.lastIndexOf(2) // 0, пошук з права наліво
Math.max.apply(null, a) // 6
Math.min.apply(null, a) // 2
var b = ["c", "a", "b", "d"]
b.sort()
b.reverse()
var c = [20, 3, 100, 0]
c.sort()
c.sort(function(a, b){return a-b})
function(a, b){return a.year - b.year}
b = [4, 2, 3, 1] -> 1,2,3,4
a,b,c,d а,б,в,г
d,b,a,c
0,100,20,3
0,3,20,100
function compare( a, b ) { if ( a.name < b.name ){ return -1; } if ( a.name > b.name ){ return 1; } return 0; }
Array.isArray(arr) - true
arr.toString() - конвертувати в рядок
entries
var numbers = [1, 2, 3, 4, 5, 6, 7]
var f = numbers.entries()
for (x of f) {
console.log(x);
}
// [0, 1]
// [1, 2]
// [2, 3]
// [3, 4]
// [4, 5]
// [5, 6]
// [6, 7]
from - перетворити радок на масив
var myArr = Array.from("ABCD");
// [A,B,C,D]
fill - заповнити
var numbers = [1, 2, 3, 4, 5, 6, 7]
numbers.fill(7)
console.log(numbers); // [7, 7, 7, 7, 7, 7, 7]
keys - новий масив з цифрами
var users = ['user', 'user', 'user', 'admin']
for (x of n) {
console.log(x)
}
// 0 1 2 3
forEach - перебрати
item - поточний елемент
i - номер (не обов'язково)
arr - масив (не обов'язково)

 

var fruits = [ "яблуко" , "груша" , "лимон" ]
fruits.forEach(F)
function F(item, index) {
document.getElementById( "demo" ).innerHTML += index + ": " + item + "<br>"
}
// якщо значення нема - пропускається

var arr = [ "яблуко" , "груша" , "лимон" ]

arr . forEach ( function (item, i, arr ) {
alert( i + ": " + item + " (масив:" + arr + ")" )
} ) ;

var emotions = [ 'happy' , 'sad' , 'angry' ]
emotions. forEach ( emotion => console .log(emotion) )
var numbers = [1, 2, 3, 4]
function F(item, index, arr) {
arr[index] = item * 10
}
numbers. forEach (F)

filter - для фільтрації
item - поточний елемент
i - номер (не обов'язково)
arr - масив(не обов'язково)
var ages = [14, 16, 18, 20, 22]
function checkAdult(age) {
return age >= 18;
}
ages.filter(checkAdult) // 18,20,22
// якщо значення нема - пропускається
var numbers = [2, 5, 1, -1, 0, 6, 7, 8, 9, -4]
var even = numbers.filter(n => n % 2 == 0)
// 2, 0, 6, 8, -4
students.filter(student => student.subject == 'math' && student.score >= 70)
map - для трансформації
var numbers = [4, 9, 16, 25]
numbers.map(Math.sqrt) // 2,3,4,5
objArray = [
{ Name: 'Andriy', Price: 2},
{ Name: 'Zahar', Price: 4},
{ Name: 'Vasil', Price: 6} ]
var result = objArray.map(a => a.Price) // 2,4,6
Або:
var result = objArray.map(({ Price }) => Price)
var result = objArray.map(function(a) {return a.Price})
// якщо значення нема - пропускається
var persons = [
{firstname : "Andriy", lastname: "Reynolds"},
{firstname : "Zahar", lastname: "Frye"},
{firstname : "Vasil", lastname: "Cobb"}
]
function getFullName(item) {
var fullname = [item.firstname,item.lastname].join(" ")
return fullname;
}
persons.map(getFullName) // Andriy Reynolds,Zahar Frye,Vasil Cobb
every/some - перевірити наявність
item - поточний елемент
i - номер (не обов'язково)
arr - масив(не обов'язково)

 

var ages = [18, 16, 30, 35]
function checkAdult(age) {
return age >= 18;
}
ages. every (checkAdult);
Чи всі цифри >= 3
const ratings = [3, 5, 4, 3, 5];
const goodOverallRating = ratings. every ( rating => rating >= 3 );
// true
Чи всі поля однакові
var survey = [
{ name: "Andriy" , answer: "Yes" },
{ name: "Zahar" , answer: "Yes" },
{ name: "Peter" , answer: "Yes" },
{ name: "Vasil" , answer: "No" }
];
function isSameAnswer(el, index, arr) {
if (index === 0){
return true
}
else {
return (el.answer === arr[index - 1].answer)
}
}
survey. every (isSameAnswer) // false
var ages = [3, 10, 18, 20]
function checkAdult(age) {
return age >= 18;
}
ages. some (checkAdult) // true
Чи є хоч один admin
const userPrivileges = [ 'user' , 'user' , 'user' , 'admin' ]
const containsAdmin = userPrivileges. some ( element => element === 'admin' )
// true