Как посчитать количество элементов в массиве js
Перейти к содержимому

Как посчитать количество элементов в массиве js

  • автор:

Array.prototype.find()

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015 .

Сводка

Метод find() возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции. В противном случае возвращается undefined .

Также смотрите метод findIndex() , который возвращает индекс найденного в массиве элемента вместо его значения.

Если вам нужно найти позицию элемента или наличие элемента в массиве, используйте Array.prototype.indexOf() или Array.prototype.includes() соответственно.

Синтаксис

arr.find(callback[, thisArg])

Параметры

Функция, вызывающаяся для каждого значения в массиве, принимает три аргумента:

Текущий обрабатываемый элемент в массиве.

Индекс текущего обрабатываемого элемента в массиве.

Массив, по которому осуществляется проход.

Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback .

Возвращаемое значение

Значение элемента из массива, если элемент прошёл проверку, иначе undefined .

Описание

Метод find вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true . Если такой элемент найден, метод find немедленно вернёт значение этого элемента. В противном случае, метод find вернёт undefined . До Firefox 34 функция callback не вызывалась для «дырок» в массивах (bug 1058394).

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

Если в метод find был передан параметр thisArg , при вызове callback он будет использоваться в качестве значения this . В противном случае в качестве значения this будет использоваться значение undefined .

Метод find не изменяет массив, для которого он был вызван.

Диапазон элементов, обрабатываемых методом find , устанавливается до первого вызова функции callback . Элементы, добавленные в массив после начала выполнения метода find , не будут посещены функцией callback . Если существующие, непосещение элементы массива изменяются функцией callback , их значения, переданные в функцию, будут значениями на тот момент времени когда метод find посетит их; удалённые элементы все ещё будут посещены.

Примеры

Пример: поиск простого числа в массиве

Следующий пример находит в массиве положительных чисел элемент, являющийся простым числом (либо возвращает undefined , если в массиве нет простых чисел).

function isPrime(element, index, array)  var start = 2; while (start  Math.sqrt(element))  if (element % start++  1)  return false; > > return element > 1; > console.log([4, 6, 8, 12].find(isPrime)); // undefined, не найдено console.log([4, 5, 8, 12].find(isPrime)); // 5 

Полифил

Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий сниппет в качестве полифила:

// https://tc39.github.io/ecma262/#sec-array.prototype.find if (!Array.prototype.find) < Object.defineProperty(Array.prototype, 'find', < value: function(predicate) < // 1. Let O be ? ToObject(this value). if (this == null) < throw new TypeError('"this" is null or not defined'); >var o = Object(this); // 2. Let len be ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. If IsCallable(predicate) is false, throw a TypeError exception. if (typeof predicate !== 'function') < throw new TypeError('predicate must be a function'); >// 4. If thisArg was supplied, let T be thisArg; else let T be undefined. var thisArg = arguments[1]; // 5. Let k be 0. var k = 0; // 6. Repeat, while k < len while (k < len) < // a. Let Pk be ! ToString(k). // b. Let kValue be ? Get(O, Pk). // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). // d. If testResult is true, return kValue. var kValue = o[k]; if (predicate.call(thisArg, kValue, k, o)) < return kValue; >// e. Increase k by 1. k++; > // 7. Return undefined. return undefined; >, configurable: true, writable: true >); >

Спецификации

Specification
ECMAScript Language Specification
# sec-array.prototype.find

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Array.prototype.findIndex() Экспериментальная возможность
  • Array.prototype.every()

Длина массива JS

Длина массива (размер) — это количество элементов в массиве JavaScript.

Для определения длины есть стандартное свойство length . Его можно вызвать как у переменной, в которой содержится массив, так и у самого массива:

const arr = ['Samsung', 'Apple', 'LG', 'Huawei']; console.log(arr.length); // 4 console.log(['Samsung', 'Apple', 'LG', 'Huawei'].length); // 4

Значение пустой строки » , undefined , null также будут учтены:

const arr = ['Samsung', '', 'Apple', undefined, 'LG', null, 'Huawei']; console.log(arr.length); // 7

Часто данное свойство используется при переборе массива с помощью цикла for / while

const arr = ['Samsung', 'Apple', 'LG', 'Huawei']; for (let i = 0; i < arr.length; i++) < console.log(i, arr[i]); >let i = 0; while (i

Данный код вернет такой результат в консоли:

0 'Samsung' 1 'Apple' 2 'LG' 3 'Huawei'

Есть конечно сейчас более удобные и часто используемые метода для перебора массива, такие как forEach() .

Также данное свойство можно использовать для добавления элемента в массив.

Как задать размер массива?

Чтобы создать пустой массив с определенным количеством пустых элементов, мы можем использовать следующий код:

const arr = new Array(2); console.log(arr); // [empty, empty] console.log(arr.length); // 2

Ваши вопросы и комментарии:

Добавить комментарий Отменить ответ

Свежие записи

  • MySQL IS NULL — проверка поля на NULL
  • MySQL LIKE — поиск по паттерну
  • Between MySQL — оператор для выборки по диапазону значений
  • MySQL IN и NOT IN — несколько условий
  • MySQL WHERE — синтаксис и примеры

Копирование материалов разрешено только с ссылкой на источник Web-Dev.guru
2024 © Все права защищены.

Поиск и подсчёт количества элементов в массиве js

Доброй ночи. Есть многомерный массив arr[[],[],[]] , состоящий из false и true , подскажите каким методом получить количество true в массиве?

Отслеживать
5,980 1 1 золотой знак 20 20 серебряных знаков 26 26 бронзовых знаков
задан 29 янв 2018 в 23:22
Artyom Sapsay Artyom Sapsay
97 1 1 серебряный знак 11 11 бронзовых знаков
циклами и рекурсией
– user176262
29 янв 2018 в 23:25
а можно по-точнее?
29 янв 2018 в 23:26

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Как и сказал Igor, циклы и рекурсия :

var ar = [ [true, false, true], [true, false, false], [true, false, true], [true, true, true], [false, false, true], [true, false], true, false, [true, false] ]; function calculate(array) < var res = < 'false': 0, 'true': 0 >; count(array); return res; function count(arr) < arr.forEach(e => < if (Array.isArray(e)) < count(e); >else < res['false'] += e ? 0 : 1; res['true'] += e ? 1 : 0; >>); >; >; console.log(calculate(ar));

Отслеживать
ответ дан 29 янв 2018 в 23:42
Rostyslav Kuzmovych Rostyslav Kuzmovych
5,980 1 1 золотой знак 20 20 серебряных знаков 26 26 бронзовых знаков

Ещё как вариант используя функцию .reduce :

const countTrue = arrayOrElement => Array.isArray(arrayOrElement) ? arrayOrElement.reduce((number, element) => number + countTrue(element), 0) : (arrayOrElement ? 1 : 0); 

То же для подсчёта произвольных элементов:

const countValues = (arrayOrElement, valueToCount) => Array.isArray(arrayOrElement) ? arrayOrElement.reduce((number, element) => number + countValues(element, valueToCount), 0) : (arrayOrElement === valueToCount ? 1 : 0); 

Сниппет для обоих вариантов:

let array = [ [true, false, true, false], [true, [false, [false, []]]], [[[[true]]]], [[[true], true], true], true, false, [[[[]]]] ]; const countTrue = arrayOrElement => Array.isArray(arrayOrElement) ? arrayOrElement.reduce((number, element) => number + countTrue(element), 0) : (arrayOrElement ? 1 : 0); console.log(countTrue(array)); const countValues = (arrayOrElement, valueToCount) => Array.isArray(arrayOrElement) ? arrayOrElement.reduce((number, element) => number + countValues(element, valueToCount), 0) : (arrayOrElement === valueToCount ? 1 : 0); console.log(countValues(array, false));

Array.length

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015 .

Сводка

Свойство length объекта, который является экземпляром типа Array , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.

var items = ["shoes", "shirts", "socks", "sweaters"]; items.length; // возвращает 4 

Синтаксис

arr.length

Описание

Свойство length является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (232).

var namelistA = new Array(4294967296); //2 в 32 степени = 4294967296 var namelistC = new Array(-100); //отрицательная величина console.log(namelistA.length); //RangeError: Invalid array length console.log(namelistC.length); //RangeError: Invalid array length var namelistB = []; namelistB.length = Math.pow(2, 32) - 1; //устанавливает длину массива меньше 2 в 32 степени console.log(namelistB.length); //4294967295 

В любой момент вы можете установить свойство length для обрезки массива. Когда вы расширяете массив, изменяя его свойство length , реальное количество элементов в массиве увеличивается; например, если вы установите свойство length в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно undefined .

var arr = [1, 2, 3]; printEntries(arr); arr.length = 5; // устанавливает длину массива 5. printEntries(arr); function printEntries(arr)  var goNext = true; var entries = arr.entries(); while (goNext)  var result = entries.next(); if (result.done !== true)  console.log(result.value[1]); goNext = true; > else goNext = false; > console.log("=== printed == token punctuation">); > // 1 // 2 // 3 // === printed === // 1 // 2 // 3 // undefined // undefined // === printed === 

Таким образом, свойство length ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел Взаимосвязь свойства length с числовыми свойствами.

Атрибуты свойства Array.length
Записываемое да
Перечисляемое нет
Настраиваемое нет

Примеры

Пример: итерирование по массиву

В следующем примере массив numbers итерируется до значения свойства length , показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.

var numbers = [1, 2, 3, 4, 5]; for (var i = 0; i  numbers.length; i++)  numbers[i] *= 2; > // Массив numbers теперь равен [2, 4, 6, 8, 10]; 

Пример: сокращение массива

Следующий пример сокращает массив statesUS до длины в 50 элементов, если текущая длина массива больше 50.

if (statesUS.length > 50)  statesUS.length = 50; > 

Спецификации

Specification
ECMAScript Language Specification
# sec-properties-of-array-instances-length

Совместимость с браузерами

BCD tables only load in the browser

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *