首页 > 解决方案 > IE9:如果字符串的值在对象数组中匹配,则操作字符串

问题描述

在下面的函数 setChildNumber 中传递了“Child2”或“Child3”、“Child4”等字符串。“family”变量包含对象数组。我添加了一个示例数据。此代码需要支持 IE9。所以我不能使用“查找”。

客观的:

我需要帮助从对象的家庭数组中查找索引,如果 family.type === child 和 id === memberID,则将 memberID 替换为 family[] 中的索引

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
    }
]

标签: javascript

解决方案


您可以使用一个简单的for循环。

var idx = -1;
for(var i = 0; i < family.length; i++){
    if(family[i].type.toLowerCase() === 'child' && family[i].id === memberID){
          idx = i;
          break;
    }
}

推荐阅读