Головна‎ > ‎JavaScript‎ > ‎

Масиви

var arr = ["Mercedes-Benz""Tesla""BMW"]

var c = [5, 3, 2, 4]   // c[0] = 5

var numbers = ["Андрій", 2, 3.14, "A"];

var numbers = [1, 2, 3, 4];
console.log(...numbers);   // 1 2 3 4
console.log(numbers);     // [1, 2, 3, 4]



Двовимірний

var numbers = [[0, 2, 4], [1, 3, 5] ]   // numbers2[1][1] = 3

var n = 4, m = 4;
var mas = [];
for (var i = 0; i < m; i++)
{
mas[i] = [];
for (var j = 0; j < n; j++)
{
mas[i][j] = 0;
}
}

var 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 (var i = 0; i < this.length; i++) {  this[i] = this[i].toUpperCase() }
}
arr.velykiBukvy()  // MERCEDES-BENZ, VOLVO, BMW




Методи

var arr = txt.split(",") - розбити текст на масив рядків
var arr = arr.concat(arr2) - об'єднати
arr.pop() - видаляє останній елемент 
arr.push("7"вставляє в кінець; повертає нову довжину 
arr.push("8", "9"
arr.shift() - видаляє [0] елемент; повертає значення що видаляється
var size = arr.unshift("1") - unshift("1","2") - вставляє на початок; повертає нову довжину
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() 

 b = [4, 2, 3, 1] -> 1,2,3,4
 a,b,c,d  а,б,в,г 
 d,b,a,c  
 
 var c = [20, 3, 100, 0]
 c.
sort()
 c.sort(function(a, b){return a-b})
 //function(a, b){return a.year - b.year}

 
 0,100,20,3 
 0,3,20,100


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



reduce/reduceRight - пробігти та вирахувати значення
  • total - акумулює результат
  • currentValue - поточний елемент 
  • currentIndex - індекс (не обов'язково)
  • arr - масив об'єктів (не обов'язково)

 var numbers = [100, 50, 20];

 function F(total, num) {    // якщо значення нема - пропускається
    return total - num;        // total + Math.round(num);
 }

 numbers.reduce(F)  // 30

 var numbers = [5, 10, 15];
 numbers.reduce( (sum, cur) => sum + cur )  // 30


 reduceRight  - те саме, але з права на ліво




find - знайти
  • item - поточний елемент
  • i - номер (не обов'язково)
  • arr - масив (не обов'язково)

 var ages = [10, 15, 20, 25, 30]

 function checkAdult(age) {
    return age >= 18
 }

 ages.find(checkAdult)  // 20  і undefined - якщо не знайдено

 var ages = [10, 15, 20, 25, 30]

 ages.find(element => element >= 18)  // 20

 var c = ["Citrus", "Comfy", "Rozetka"]

 c.find(element => element.startsWith(
"R")))  // Rozetka


copyWithin - перекинути елементи не виходячи за межі
  • index - позиція для копіювання
  • start - початок (не обов'язково)
  • end - кінець (не обов'язково)
 var numbers = [1, 2, 3, 4, 5, 6, 7]
 numbers.
copyWithin(2, 0)
 // [1, 2, 1, 2, 3, 4, 5]

 var numbers = [1, 2, 3, 4, 5, 6, 7]
 numbers.
copyWithin(3, 1, numbers.length)
 // [1, 2, 3, 2, 3, 4, 5]
 


findIndex - найти індекс
  • item - поточний елемент
  • i - номер (не обов'язково)
  • arr - масив (не обов'язково)
 var numbers = [12, 15, 17]
 function checkAdult(age) {
    return age >= 18;
 }
 
 numbers.findIndex(checkAdult))   // -1
 // якщо значення нема - пропускається



includes - чи має масив
  • element - що шукаємо
  • start - початок (не обов'язково)
 var numbers = [12, 15, 17]
 numbers.includes(12)  // true

 var numbers = [12, 15, 17]
 numbers.includes(12, 1)  // false



splice
  • index - поточний елемент
  • howmany - видалити, 0 - нічого не видаляти (не обов'язково)
  • item1, item2, item3... - додати (не обов'язково)
  var numbers = [1, 3, 5, 7]
  numbers.splice(2, 0, 11, 12)
  console.log(numbers)
  // [1, 3, 11, 12, 5, 7]
  var numbers = [1, 3, 5, 7]
  numbers.splice(2, 1, 11, 12)
  console.log(numbers)
  // [1, 3, 11, 12, 7]