筛选Select2数据数组的JS对象

时间:2018-09-30 21:07:17

标签: javascript arrays

我想用来自先前输入的过滤后的值动态填充我的Select2下拉列表。

var object =    [
        { 
            London: [
                        "112233" : "Company 1",
                        "112244" : "Company 2",
                    ],
            Manchester: [
                        "112255" : "Company 3",
                        "112266" : "Company 4",
                    ]
        }
    ]

我想返回这样的数组:

var data = [
    {
        id: 112233,
        text: 'Company 1'
    },
    {
        id: 11223344,
        text: 'Company 2'
    }
];

为了简化此过程,假设city变量包含我的过滤条件。我有以下JS对象。我的功能无法正常工作。

function getRelatedVenues(city) {
    var venues = [];
    for (var key in object.city)
    {
        venues.push({id:object.city[key],text:object.city[key]});
    }
    return venues;
}

var venueData = getRelatedVenues('London');

这将返回一个空数组。

1 个答案:

答案 0 :(得分:0)

该函数返回空数组的原因是object.city正在读取与文字键"city"相对应的键上的值,该值当然不存在。由于city是一个变量,因此您需要使用方括号表示法来查找具有以下值的键:object[city]

在被推到数组上的对象的id中也存在错误。总之,该功能应作如下修改:

function getRelatedVenues(city) {
    var venues = [];
    for (var key in object[city])
    {
        venues.push({id:key,text:object[city][key]});
    }
    return venues;
}