如果在JSON对象中找到密钥,则仅触发一次

use*_*286 2 javascript each json

我有一个产品的JSON对象.在对象中,我想检查是否有任何产品的featured密钥设置为true.如果密钥存在于对象中的任何位置,我想h3在结果上面添加一次.

假设我有一个包含4个产品的对象,其中一个产品的featured密钥设置为true,我将如何调整此代码,以便h3只添加一次(目前它被添加了4次)?

var searchResult = '';
$.each(products, function (id, product) {
    if (products[id].featured) { searchResult += '<h3>Featured</h3>'; }
});
Run Code Online (Sandbox Code Playgroud)

cha*_*tfl 7

添加return false内部$.each回调以打破循环

var searchResult = '';
$.each(products, function (id, product) {
    if (products[id].featured) { 
        searchResult += '<h3>Featured</h3>'; 
        return false;
    }       
});
Run Code Online (Sandbox Code Playgroud)

您可以使用Array#find()Array#some()改为缩短它

var searchResult = '';
var featured =  products.some(function(prod){ return prod.featured});
if(featured){
   searchResult += '<h3>Featured</h3>'; 
}
Run Code Online (Sandbox Code Playgroud)