Извлекать только несколько объектов из массива

#javascript

#javascript

Вопрос:

Я недавно работаю с Postman над созданием некоторых тестов.

Большинство get ответов состоят из больших массивов с множеством объектов в них (я просто оставил два свойства для удобства чтения, объекты имеют более 20 свойств).

У меня есть скрипт, который считывает весь ответ для получения правильных данных, а затем возвращает результат.

Как я могу остановить скрипт на определенном количестве объектов?

 [
   {
      "username": "",
      "active": ""
   },
   {
      "username": "",
      "active": ""
   }
]
 

Комментарии:

1. if (numberOfObjects >= expectedNumber) { return someValue; }

Ответ №1:

Может быть, это поможет вам (я не знаю, хорошо ли я понял).

Но с помощью filter вы можете получить значения с одним свойством (вы можете сопоставить все, что хотите), а с помощью slice вы получите первые N значений.

Таким образом, вам не нужно перебирать весь список, и вы можете проверять только эти значения.

Кроме того, если вам нужно только количество элементов, соответствующих условию, нужно использовать только filter и длина.

 var array = [
   {
      "username": "1",
      "active": true
   },
   {
      "username": "2",
      "active": false
   },
   {
      "username": "3",
      "active": true
   }
]

var total = 1 // total documents you want
var newArray = array.filter(e => e.active).slice(0, total);

console.log(newArray)

//To know the length of elements that match the condition:
var length = array.filter(e => e.active).length
console.log(length) 

Комментарии:

1. Отличная работа, большое вам спасибо! Вся идея мне очень помогла, спасибо!

2. Добро пожаловать! Если ваша проблема была решена, отметьте ответ как принятый, приветствуется

Ответ №2:

Посмотрите, поможет ли приведенный ниже код

 function processLongArray() {

  var myLongArray = [{
    "username": "active"
  }, {
    "username": "active"
  }, {
    "username": "inactive"
  }]; // and many more elements in the array

  var count = 0;
  var targetCount = 1; // stop after this number of objects
  for (var i = 0; i < myLongArray.length; i  ) {
    var arrayItem = myLongArray[i];

    // condition to test if the arrayItem is considered in count
    // If no condition needed, we can directly increment the count
    if (arrayItem.username === "active") {
      count  ;
    }

    if (count >= targetCount) {
      console.log("OK we are done! @ "   count);
      return count; // or any other desired value
    }
  }
}

processLongArray();
 

Комментарии:

1.Отличная работа, большое вам спасибо! Вся идея мне очень помогла, спасибо!