В приведенной ниже функции setChildNumber передаются такие строки, как «Child2» или «Child3», «Child4». Переменная «семейство» содержит массив объектов. Я добавил пример данных. Этот код должен поддерживать IE9. Поэтому я не могу использовать «найти».
Цель:
Мне нужна помощь в поиске индекса из семейного массива объектов, если family.type === child and id === memberID, замените memberID на индекс из семейства[]
function setChildNumber(member) {
var family = JSON.parse(sessionStorage.getItem('memberObject'));
var memberID = +member.match(/\d+/)[0];
if(!family) return;
var index = member.toLowerCase().indexOf('child') === 0
&& family.find(function(elem) {
return (elem.id === memberID);
}).index;
return member.slice(0, member.length-1) + ' ' + index;
}
family = [
{
"id": 1,
"type": "SELF",
"birthday": "10/10/1980",
"age": 40
},
{
"id": 2,
"type": "CHILD",
"index": 1,
"birthday": "10/10/2001"
},
{
"id": 3,
"type": "SPOUSE",
"birthday": "10101980",
"age": 40
},
{
"id": 4,
"type": "CHILD",
"index": 2,
"birthday": "10102010",
"age": 10
}
]
Вы можете заменить
find()
тривиальным цикломfor
.Здесь также есть полифилл: github.com/zloirock/core-js#ecmascript-array