使用下面这个函数的原始想法是它应该只在ID匹配时才返回卡(一个对象),但是它没有返回任何内容(它返回未定义):
set size ratio 1
然后我意识到我的返回范围错误,我需要返回循环返回的内容,所以我提出了这个:
showDetails(cards, id){
cards.map(function(card, index){
if(card.id==id){
console.log(card);
return card;
}
})
}
上面代码的结果是:[undefined,Object]
我只想让这个函数showDetails返回对象,而不是数组。
谢谢!
答案 0 :(得分:8)
您可以在提前退出时使用Array#some
。
function saveData(filename,data){
if(!userDir) {
//report error
return;
}
userDir.getFile(filename, {create: true}, function(fileEntry) {
if(!fileEntry || !fileEntry.isFile){
//report error
return;
}
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
//report success
};
fileWriter.onerror = function(e) {
//report error: e.toString()
};
//Create a Blob from the data and write it.
var blob = new Blob([data], {type: 'text/plain'});
fileWriter.write(blob);
});
});
}
//at some point after user has selected directory
saveData("log.txt","Some data");
或使用ES6方法Array#find
function showDetails(cards, id) {
var result;
cards.some(function(card) {
if (card.id === id) {
result = card;
return true;
}
});
return result;
}