在JSON数组中查找项目并将其传递给其他数组时遇到一些问题。我得到的错误似乎是它没有正确地将项目传递出函数。它正在数据库中找到该项,我可以在控制台日志中正确地看到它并使用JSON.stringify正确查看它。
尽管如此,无论我如何尝试将其传递出函数(作为字符串,作为对象等),它都不会返回除undefined之外的值。
如果我在newCard上执行console.log,它将始终以未定义的方式返回。
非常感谢您对此的任何帮助。谢谢。
var deckObject = [];
var newCard = findCard('EX1_123');
deckObject.push(newCard);
function findCard(cardId){
$.each(cardDB, function(i, v) {
if (v.id === cardId) {
v['count'] = 1;
return v;
}
});
}
答案 0 :(得分:1)
你永远不应该从循环中返回值,而是使用回调来管理异步代码
var deckObject = [];
var newCard = findCard('EX1_123',function(newcard){
deckObject.push(newCard);
});
function findCard(cardId,callback){
$.each(cardDB, function(i, v) {
if (v.id === cardId) {
v['count'] = 1;
callback(v);
}
});
}
答案 1 :(得分:0)
$.each
不会返回该功能。将返回的值分配给vraible,然后将其返回。
function findCard(cardId){
var res = $.each(cardDB, function(i, v) {
if (v.id === cardId) {
console.log(v.id);
v['count'] = 1;
return v;
}
});
return res;
}
示例代码段。
$(function(){
var cardDB = [
{
id: '1',
count: 0
},
{
id: '2',
count: 0
},
{
id: '3',
count: 0
}
]
var deckObject = [];
var newCard = findCard('1');
console.log(newCard);
deckObject.push(newCard);
function findCard(cardId){
var opt = $.each(cardDB, function(i, v) {
if (v.id === cardId) {
console.log(v.id);
v['count'] = 1;
return v;
}
});
return opt;
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>