如果发现数据,如何停止循环json

时间:2017-08-03 04:58:11

标签: jquery each

我正在尝试搜索我的对象上是否存在数据,并且此代码按预期工作,但显示结果时出现问题。它显示了我对象的所有索引。

如果在我的对象中找到结果,我将如何停止循环

$(document).ready(function(){
	var myData = {
		"animals":[{
			"name":"cat"
		},
		{
			"name":"dog"
		},
		{
			"name":"horse"
		},
		{
			"name":"bear"
		}
		]};

	$('#send').click(function(){
		var res = $('#animal').val();
		
		$.each(myData.animals, function(i,j){
			if(j.name == res){
				console.log('found');
			}
			else{
				console.log('not found');
			}
		});

    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myData">
	<input type="text" id='animal'>
	<button id='send'>find</button>
</div>

2 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
  var myData = {
    "animals": [
      {
        "name": "cat"
      },
      {
        "name": "dog"
      },
      {
        "name": "horse"
      },
      {
        "name": "bear"
      }
    ]
  };

  $('#send').on('click', function() {
    var res = $('#animal').val();
    
    var foundAnimal = myData.animals.find(function(animal){
      return animal.name === res;
    });
    
    console.log('Animal Found: '+ !!foundAnimal);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myData">
	<input type="text" id='animal'>
	<button id='send'>find</button>
</div>

答案 1 :(得分:1)

除了使用jQuery之外,您还可以使用array#find

  

find()方法返回数组中第一个满足提供的测试函数的元素的值

&#13;
&#13;
const myData = {"animals":[{"name":"cat"},{"name":"dog"},{"name":"horse"},{"name":"bear"}]};

const res = "horse";

var result = myData['animals'].find((animal) => {
    return animal['name'] === res;
});

console.log(result);
&#13;
&#13;
&#13;