我想使用Promise.all()
來檢查值是否在數組中。我的問題是當在數組中找不到值時,諾言返回undefined
,但我想只有在我的數組中找到的值。Promise.all() - 如何解析()而不返回undefined或值
var array = [1,5,10];
var values = [1,2,3,4,5,6,7,8,9,10];
var foundValues = [];
values.forEach(function(value) {
foundValues.push(isInArray(array, value));
});
Promise.all(foundValues).then(function(values) {
console.log(values) // [1, undefined, undefined, undefined, 5, undefined, undefined, undefined, undefined, 10 ]
});
function isInArray(array, value) {
return new Promise(function(resolve, reject) {
if (array.indexOf(value) > -1) {
resolve(value); //here the value is returned
} else {
resolve(); //here undefined is returned
}
});
};
編輯:的問題是不是真正的數組中找到價值,我只是選擇了這個簡單的例子來說明我的問題。
你知道有更好的方法來檢查,如果一個值是一個數組,對不對? – Neil
我假設你使用這個作爲更復雜的異步代碼的例子,但真正的問題是什麼?如果你沒有找到任何值,那麼因爲你沒有任何解決方法,所以'resolve()'有什麼問題? –
'values = values.filter(x => typeof x!=='undefined')'? – towerofnix