Javascript函数返回false,即使找到对象

Javascript函数返回false,即使找到对象,javascript,jquery,json,Javascript,Jquery,Json,我有一个产品javascript数组,其中包含所有产品信息。 创建了一个函数,该函数迭代此数组并通过匹配id查找产品 var products = JSON.parse('[{"Product":{"id":"1","name":"My Product","description":"This is my new product","price":"10.00","currency":"$","stock":"0","image":"/image1.png"}},{"Product":{"id"

我有一个产品javascript数组,其中包含所有产品信息。 创建了一个函数,该函数迭代此数组并通过匹配id查找产品

var products = JSON.parse('[{"Product":{"id":"1","name":"My Product","description":"This is my new product","price":"10.00","currency":"$","stock":"0","image":"/image1.png"}},{"Product":{"id":"5","name":"Dummy Product 2","description":"Some dummy text goes here.","price":"10.00","currency":"$","stock":"100","image":"image2.jpg"}}]');

$(document).ready(function(){
    console.log(products);
    alert(findProduct(5)); //it will returns false everytime, evan it has matching product
});

function findProduct(product_id){
    $.each(products, function(k, v){
        if(v.Product.id == product_id){
            console.log(v);
            return products[k]; //or return 'v'
        }
    });
    return false;
}
检查这个

函数每次返回false,即使它找到了匹配的产品id,也不知道为什么?如果我将匹配的数组键存储在一个变量中,并在迭代后返回该键的值,它将返回正确的对象。但这不是正确的方法,因为如果找到对象,我想停止迭代并返回值。

使用以下方法:

function findProduct(product_id){
    var result = false;
    $.each(products, function(k, v){
        if(v.Product.id == product_id){
            console.log(v);
            result = products[k]; //or return 'v'
            return;
        }
    });
    return result;
}
问题是:

function findProduct(product_id){
    $.each(products, function(k, v){
        if(v.Product.id == product_id){
            console.log(v);
            return products[k]; //returns from the $.each callback
        }
    });
    return false;
}

您总是从
findProduct
返回false,如果找到该项,则您是从
$.each()
回调方法返回的,但这不会反映在
findProduct
方法返回的值中

function findProduct(product_id) {
    var found = false;
    $.each(products, function (k, v) {
        if (v.Product.id == product_id) {
            console.log(v);
            found = products[k];
            //return false to prevent further iteration
            return false;
        }
    });
    return found;
}

不需要jQuery的每个函数。仅在需要时使用库

问题是,“each”方法实际上是另一个函数。从它返回对“findProduct”功能没有任何意义

function findProduct(product_id){
    for(var k in products){
        var product = products[k];
        if(product && product.Product && product.Product.id == product_id)
            return product;
    }
    return false;
}

返回结果可能?是的,修复了。谢谢你的来信。