对于我真正苦苦挣扎的问题的解决方案,我将不胜感激。它是什么,我有许多 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.filter
和 String.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/