Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2017, 11:53
Аспирант
Отправить личное сообщение для phoenix200689 Посмотреть профиль Найти все сообщения от phoenix200689
 
Регистрация: 02.11.2016
Сообщений: 31

перебор массива объектов
Всем привет! Подскажите, пожалуйста где делаю не правильно:
Есть массив объектов, у каждого объекта есть свойство status.
Хотелось бы передать в функцию параметр "Выполнено" и получить количество всех объектов, в которых status: "Выполнено".
Пробую так:
function getStatus(array, search) {
    var values = [];
    
    array.forEach(function(values, item) {
      if (item.key === search) {
        values.push(item.key);
      }
    });

    return values;
};


var projects = [{
      comments: "какой-то комментарий из первого объекта",
      prioritet: "4",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из второго объекта",
      prioritet: "1",
      status: "В работе"
    }, {
      comments: "какой-то комментарий из третьего объекта",
      prioritet: "2",
      status: "Просрочено более 7 дней"
    }, {
      comments: "какой-то комментарий из четвертого объекта",
      prioritet: "3",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из пятого объекта",
      prioritet: "5",
      status: "Просрочено до 7 дней"
    }];
    
    console.log(getStatus(projects, "Выполнено"));
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2017, 12:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

phoenix200689,
function getStatus(array, search) {
    return array.filter(function(item) {
        return Object.keys(item).some(function(key) {
            return item[key] === search
        })
    })
};


var projects = [{
      comments: "какой-то комментарий из первого объекта",
      prioritet: "4",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из второго объекта",
      prioritet: "1",
      status: "В работе"
    }, {
      comments: "какой-то комментарий из третьего объекта",
      prioritet: "2",
      status: "Просрочено более 7 дней"
    }, {
      comments: "какой-то комментарий из четвертого объекта",
      prioritet: "3",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из пятого объекта",
      prioritet: "5",
      status: "Просрочено до 7 дней"
    }];

    console.log(getStatus(projects, "Выполнено"));
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2017, 12:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

фильтрация массива по условию
phoenix200689,
или так
function getStatus(array, search) {
    return array.filter(function(item) {
            return search(item)
    })
};


var projects = [{
      comments: "какой-то комментарий из первого объекта",
      prioritet: "4",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из второго объекта",
      prioritet: "1",
      status: "В работе"
    }, {
      comments: "какой-то комментарий из третьего объекта",
      prioritet: "2",
      status: "Просрочено более 7 дней"
    }, {
      comments: "какой-то комментарий из четвертого объекта",
      prioritet: "3",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из пятого объекта",
      prioritet: "5",
      status: "Просрочено до 7 дней"
    }];

    console.log(getStatus(projects, function(item) {
  return item.status === "Выполнено"
}));
Ответить с цитированием
  #4 (permalink)  
Старый 26.07.2017, 16:25
Аспирант
Отправить личное сообщение для phoenix200689 Посмотреть профиль Найти все сообщения от phoenix200689
 
Регистрация: 02.11.2016
Сообщений: 31

Спасибо, Рони
Ответить с цитированием
  #5 (permalink)  
Старый 26.07.2017, 16:58
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Вариант - на базе оригинала
function getStatus(array, search) {
    var values = [];
    
    array.forEach(function(item) {
      if (item.status === search) {
        values.push(item);
      }
    });

    return values;
};


var projects = [{
      comments: "какой-то комментарий из первого объекта",
      prioritet: "4",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из второго объекта",
      prioritet: "1",
      status: "В работе"
    }, {
      comments: "какой-то комментарий из третьего объекта",
      prioritet: "2",
      status: "Просрочено более 7 дней"
    }, {
      comments: "какой-то комментарий из четвертого объекта",
      prioritet: "3",
      status: "Выполнено"
    }, {
      comments: "какой-то комментарий из пятого объекта",
      prioritet: "5",
      status: "Просрочено до 7 дней"
    }];
    
    console.log(getStatus(projects, "Выполнено"));
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2017, 09:42
Аспирант
Отправить личное сообщение для phoenix200689 Посмотреть профиль Найти все сообщения от phoenix200689
 
Регистрация: 02.11.2016
Сообщений: 31

спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор массива объектов JSON Sokoljr Общие вопросы Javascript 13 24.04.2017 13:59
Конструктор массива объектов и работа с ними через localStorage pepel266 Общие вопросы Javascript 16 04.11.2015 18:30
Вызов свойств объектов из массива или объекта с параметрами Sanu0074 jQuery 4 22.05.2015 10:18
Перебор массива - вложенный цикл SWin Общие вопросы Javascript 35 27.12.2013 05:06
Перебор массива объектов Триви jQuery 12 26.08.2011 09:22