пожалуйста, мне нужна помощь с этим
const obj = {a = "", b = "good", c=false, d = "", e = "excellent"}
Я просто хочу знать, что все пусто и ложно. где мой ответ должен быть 3.
const obj = {a = "", b = "good", c=false, d = "", e = "excellent"}
for (let k in obj) {
if (obj[k] === '' || obj[k] === false) {
//console.info(k);
}
}
Любые указатели будут очень признательны
Спасибо
То, что вы показываете, недействительно JS. Но если у вас есть действительный JS, хорошим местом для начала будет Object.values(obj).reduce(...) (или, если вы также хотите что-то сделать с именами ключей, Object.entries вместо Object.values).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто создать массив и поместить в него пустые ключи. Таким образом, в конце программы длина массива будет равна количеству пустых элементов.
const obj = {a:"", b:"good", c:false, d:"", e:"excellent"}
const emptyElements = [] // an array containing all the keys of the properties that are empty
for (let key in obj) {
if (obj[key] === '' || obj[key] === false) {
// Key is empty
emptyElements.push(k)
}
}
console.info(emptyElements.length) // the number of empty elements in the object
Или вы можете просто добавить переменную, которая увеличивается всякий раз, когда обнаруживает пустое значение.
const obj = {a:"", b:"good", c:false, d:"", e:"excellent"}
let nEmptyElements = 0 // Number of empty elements
for (let key in obj) {
if (obj[key] === '' || obj[key] === false) {
// Key is empty
nEmptyElements += 1 // Increment the number of empty element
}
}
console.info(nEmptyElements) // the number of empty elements in the object
Надеюсь это поможет
const obj = {a:"", b:"good", c:false, d:"", e:"excellent"};
let count = 0;
for (let k in obj) {
if (obj[k] === '' || obj[k] === false) {
count++;
}
}
console.info(count); Вы можете reduce переиграть Object.values.
const obj = {a: "", b: "good", c: false, d: "", e: "excellent"};
let falsyValuesCount = Object.values(obj).reduce((a, c) => a + !c, 0);
console.info(falsyValuesCount);Чтобы получить фактические значения, которые были ложными, вместо этого используйте Array#filter.
Вот один лайнер для архивирования вашего набора результатов с помощью Array.Prototype.filter:
const obj = {a: "", b: "good", c: false, d: "", e: "excellent"};
const resultArray = Object.values(obj).filter(value => value === '' || value === false);
console.info("Count :", resultArray.length);
console.info("Array values :", JSON.stringify(resultArray));Подробнее об операции Array.Prototype.filter читайте здесь.
Вам необходимо исправить синтаксис литерала вашего объекта. Затем вам нужно добавить счетчик, который будет увеличиваться там, где находится ваш вызов console.info().