#javascript #arrays #json #performance
#javascript #массивы #json #Производительность
Вопрос:
У меня есть JSONArray, подобный приведенному ниже
[
{
"id": 1,
"firstName": "abc",
"isActive": true
},
{
"id": 2,
"firstName": "cde",
"isActive": false
},
{
"id": 3,
"firstName": "efg",
"isActive": true
},
{
"id": 4,
"firstName": "ghi",
"isActive": false
}
]
Теперь я хочу получить последний объект из этого массива, имеющий значение «isActive»: true, используя наиболее эффективный и оптимизированный способ.
{
"id": 3,
"firstName": "efg",
"isActive": true
}
Обновить :
пусть getLast = items.filter(item => item.isActive === true);
Я попытался использовать решение, предоставленное @brk. Но есть ли какой-либо способ получить объект с помощью без создания нового массива.
Ответ №1:
Сначала filter
с условием isActive === true
. Это создаст новый массив, который затем будет использоваться array.length-1
для получения последнего элемента
let data = [{
"id": 1,
"firstName": "abc",
"isActive": true
},
{
"id": 2,
"firstName": "cde",
"isActive": false
},
{
"id": 3,
"firstName": "efg",
"isActive": true
},
{
"id": 4,
"firstName": "ghi",
"isActive": false
}
]
let getLast = data.filter(item => item.isActive === true);
console.log(getLast[getLast.length - 1])
Комментарии:
1. Есть ли какой-либо способ получить объект без создания нового массива?
Ответ №2:
var jsonObject = [
{
"id": 1,
"firstName": "abc",
"isActive": true
},
{
"id": 2,
"firstName": "cde",
"isActive": false
},
{
"id": 3,
"firstName": "efg",
"isActive": true
},
{
"id": 4,
"firstName": "ghi",
"isActive": false
}
];
var lastActiveElement = jsonObject.filter( obj => obj.isActive ).pop();
console.log(lastActiveElement);
Если это то, что вы ищете
Ответ №3:
var x=[
{
"id": 1,
"firstName": "abc",
"isActive": true
},
{
"id": 2,
"firstName": "cde",
"isActive": false
},
{
"id": 3,
"firstName": "efg",
"isActive": true
},
{
"id": 4,
"firstName": "ghi",
"isActive": false
}
];
//Try the following line
x.filter(x=>x.isActive).slice(-1).pop()
Комментарии:
1. @brk я удалил
==
Спасибо за предложение