在对象属性下的对象数组中搜索JavaScript中的字符串辅助

Search inside an array of objects under an object property for a string assistance in JavaScript

本文关键字:对象 字符串 JavaScript 数组 属性 搜索      更新时间:2023-09-26

我使用的是一个JavaScript库,该库包含一些代码,这些代码需要一个简单的平面项目数组。。。

var items = [
    'item 1',
    'item 2',
    'item 3',
];

这对于我的项目需求来说太有限了,所以我正在编辑库以接受对象数组,而不是像这样。。。

var items = [
    {
        id: 1,
        name: 'Item 1',
        image: 'img 1',
    },
    {
        id: 2,
        name: 'Item 2',
        image: 'img 2',
    },
    {
        id: 3,
        name: 'Item 3',
        image: 'img 3',
    },
]; 

库调用一些代码如下。。。

if (_helpers.inArray(val, this.options.items) || (val === '')) {
    return val;
}

它检查字符串是否在items数组中。

因为我的items数组不再是一个简单的字符串值,而是一个对象。这会破坏库代码的这一部分。

它调用的函数的代码是。。。

var _helpers = {
    inArray: function(val, arr) {
        return ($.inArray(val, arr) !== -1);
    },
};

因此,我需要一些帮助来制作我自己的_helpers.inArray(val, this.options.items)函数,该函数将在对象属性name 下检查对象数组中的字符串值

感谢的任何帮助

可能是这样的吗?

var _helpers = {
    inArray: function(val, arr) {
        for (var i = 0; i < arr.length; i++){
            if (arr[i].name === val)
                return true;
        }
        return false;
    },
};

https://jsfiddle.net/z54qnukd/1/

尝试将对象数组映射回简单的格式:

var _helpers = {
    inArray: function(val, arr) {
        var mappedArr = $.map( items, function(item, index) {
            return item.name;
        });
        return ($.inArray(val, mappedArr) !== -1);
    },
};

https://jsbin.com/tihuyuquni/edit?html,输出