0
我有一個可以嵌套儘可能深的對象。我試圖確定對象的屬性ready
是否至少有一個錯誤值。如果是的話checkForFalse
函數應該返回false。我在使用遞歸來解決這個問題時感到困惑。什麼遞歸調用應該返回使這個代碼工作?或者我完全錯了,錯過了什麼?檢查對象屬性時發生遞歸混亂
var obj = {
"currentServiceContractId": {
"ready": true,
"customerPersonId": {
"ready": false
}
},
"siteId": {
"ready": true
},
"districtId": {},
"localityId": {
"ready": true
},
"streetId": {
"ready": true
}
};
function checkForFalse(mainObj) {
let ans = _.find(mainObj || obj, (val) => {
if (_.keys(val).length > 1) {
let readyObj = _.pick(val, 'ready');
return checkForFalse(readyObj);
} else {
return _.get(val, 'ready') === false;
}
});
return _.isEmpty(ans);
}
console.log(checkForFalse(obj));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
具體什麼問題?什麼是輸出與你的期望? – Carcigenicate
如果任何名爲'ready'的對象屬性具有'false'值,我希望console.log輸出'false'。現在我總是得到'虛假'控制檯登錄 – tawreon
只是一個觀察。你有一個名爲'checkForFalse'的函數,如果有錯誤,你想返回'false'。對我來說,這是一個非常具有誤導性的函數名稱。不知道該函數做了什麼,我希望通過它的名稱'checkForFalse'將返回'true',如果發現'false'。 – Keith