2017-08-03 25 views
-1

我想搜索數據是否存在於我的對象上,並且此代碼按預期工作,但顯示結果時出現問題。它顯示了我在我的對象上的所有索引。如何停止循環json如果發現數據

如果結果是在我對象

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

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

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

+1

而不是試圖停止循環,使用陣列中的第一元素的值一種更適合任務的方法,如過濾器。 http://api.jquery.com/filter/#filter-elements – Taplar

+1

要打破每個使用'return false;' – Satpal

回答

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"> 
 
\t <input type="text" id='animal'> 
 
\t <button id='send'>find</button> 
 
</div>

1

除了使用jQuery發現我怎麼停止循環,你也可以使用array#find

這一發現()方法返回滿足提供的測試功能

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);