Javascript 显示所有包含匹配字符串的对象

标签 javascript arrays javascript-objects

对于我真正苦苦挣扎的问题的解决方案,我将不胜感激。它是什么,我有许多 JavaScript 对象,其中包含各种数据,如下所示:-

Object {id: 1, shopcounty: "cornwall", shopaddress: "the cycle centre,<br />1 new street,<br />penzance,<br />tr18 2lz<br />}
Object {id: 2, shopcounty: "cornwall", shopaddress: "heliport link road,<br />long rock,<br />bude,<br />tr18 3rg"}
Object {id: 3, shopcounty: "cornwall", shopaddress: "heliport link road,<br />long rock,<br />bude,<br />tr18 3rg"}
Object {id: 4, shopcounty: "cornwall", shopaddress: "west end cottage,<br />trescowe,<br />penzance,<br />tr20 9rn"}
Object {id: 5, shopcounty: "cornwall", shopaddress: "22 joannies watch,<br />saint ives,<br />tr26 2fr"} 

我想做的是获取用户输入值并在对象地址中搜索匹配字符串,如果任何对象包含该字符串,则返回所有详细信息。

因此,如果用户键入“bude”作为他们的位置对象 2 和 3 将与他们的数据一起返回。我有下面的代码,我假设它等于 true,所以它会显示每个对象。尝试了许多其他方法,例如使用 match() 和 indexOf() 方法,但每个对象都被返回。

<input id="submit" type="submit" name="form-submit">
// user input:  "bude, united kindgom"

<script>

    $('#submit').on('click tap', function(e){
        e.preventDefault();

        var userInput   = document.getElementById('user-location').value;

        for (var i = 0; i < bikeshops.length; i++) {    
            console.log(bikeshops[i]);

            if($.inArray(userInput, bikeshops[i])){

                // console.log(bikeshops[i].shopaddress);
                // returns everything!
            }           
        }           
    });
</script>

最佳答案

像这样使用 Array.prototype.filterString.prototype.indexOf:

$('#submit').on('click tap', function(e){
    e.preventDefault();

    var userInput   = document.getElementById('user-location').value;

    var result = bikeshops.filter(function(o) {           // for each object o in the array bikeshops
        return o.shopaddress.indexOf(userInput) !== -1;   // filter out only those who have their shopaddress property containing userInput
    });       

    console.log(result); // result will contain only the objects whose shopaddress property contain userInput
});

关于Javascript 显示所有包含匹配字符串的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43698696/

相关文章:

javascript - 如何仅对 Angular 中的某些变量使用父范围,并保持其他变量隔离

c - 如何在 C 中显示数组的值?

c - 用户输入并插入数组

Java 找不到循环符号,逻辑问题?

javascript - 从对象内部的对象内部访问实例变量

javascript - 我如何只对 Javascript 对象的一部分进行 JSON 编码?

javascript - 对 Node.js 中 CPU 密集型代码的困惑

javascript - Backbone.js + jsOAuth

c# - WebAPI 删除 - HTTP/1.1 405 方法不允许

Javascript:实例化对象数组的最佳方式