Как отсортировать массив в JSON, чтобы получить значение определенного индекса?

Привет, я очень новичок в JSON и API и работаю над API, в котором я получаю значение в массиве, например.

{
   id: 0,
   text: "one"
}
{
   id: 1,
   text: "two"
}
{
   id: 2,
   text: "three"
}

Мне нужно значение только массива, где id=0, и я не знаю, как сортировать массив в JSON для достижения этого, я использовал ajax для получения этого значения

async function getDataFromId() {
    let url = 'API_URL';
    let Qid = 1;
    let result;
    try {
        result = await jQuery.ajax({
            url: url,
            type: 'GET',
            contentType: 'application/json',
        });
        result = result.sort((a, b) => a.id- b.id);
        console.info(result)
    }catch (error) {
        console.error(error);
    }
}

Зачем вам сортировать его, если вам нужно только значение, где id=0? Не достаточно ли фильтровать?

Turtlean 11.12.2020 05:52

@Turtlean, извините, это очень нубская вещь, но как фильтровать?

dev 11.12.2020 05:53
Что такое JSON вообще
Randy Casburn 11.12.2020 05:54

Попробуйте это: var new_array = result.filter(function(i){return i.id == 0})

Swati 11.12.2020 05:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
325
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вам не нужно сортировать массив, чтобы получить объект, где id == 0. Используйте Array#find, чтобы найти желаемый объект.


let myObject = myArr.find((_o)=>_o.id === 0);

Может быть, это:

if (result){
  resultSorted = result.sort((a, b) => a.id - b.id);
  resultFiltered = result.filter(x => x.id == 0);
}

Мне нужно значение только массива, где id=0

Вы правильно сортируете результат в ascendant order в соответствии с их идентификаторами, поэтому остается только создать массив, содержащий только первый элемент:

result = result.sort((a, b) => a.id- b.id)
console.info([result[0])

Вы можете воспользоваться условием, которое вам нужно, чтобы filter массив. В этом случае: id === 0. Это удалит элементы, не соответствующие условию (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter):

result = result.filter((a) => a.id === 0)
console.info(result)

Имейте в виду, что sorting массив дороже, чем просто filtering он, поэтому, если вы заинтересованы в сохранении только массива с id === 0, я бы определенно выбрал вариант filter

Ответ принят как подходящий

Все приведенные выше ответы хороши, но вы используете переменную Qid

result = result.filter(function(i){return i.id === Qid});
console.info(resulr)

Вам не нужно сортировать это, вы можете отфильтровать это, это будет более легким материалом для вашей работы.

Другие вопросы по теме