Как удалить пару ключ-значение, в зависимости от типа значения с помощью for in?

123
21 октября 2019, 06:10
    var menu = {
      width: 200,
      height: 300,
      title: "My menu"
    };

    function multiplyNumeric(obj) {
      for (var key in obj) {
        if (typeof (obj[key] == 'number')) {
          delete obj[key];
        }
    }
  }
    multiplyNumeric(menu);
    console.log(menu)

нужно удалить свойство если его значение число, или строка, в зависимости от условия

Answer 1

У Вас лишние скобки в условии:

if (typeof (obj[key] == 'number')) {

Выражение typeof (obj[key] == 'number') сводится к typeof(true) или typeof(false) и возвращает строку "boolean", в результате if всегда выполняется и удаляются все значения из obj

Рабочий пример:

var menu = { 
    width: 200, 
    height: 300, 
    title: "My menu" 
}; 
     
function multiplyNumeric(obj) { 
    for (var key in obj) { 
        if (typeof obj[key] === 'number') { 
            delete obj[key]; 
        } 
    } 
} 
 
multiplyNumeric(menu); 
console.log(menu)

Answer 2
var menu = {
      width: 200,
      height: 300,
      title: "My menu"
    };

    function multiplyNumeric(obj) {
        const v = {};
        for (var key in obj) {
            if (typeof obj[key] !== 'number') {
                v[key] = obj[key];
                // Не изменит старый обект если надо изменить просто замени v[key] = obj[key] на delete obj[key];
            }
        }
        return v;
    }
    console.log(multiplyNumeric(menu));
    console.log(menu);
READ ALSO
Контекст вызова.Не видит массив [дубликат]

Контекст вызова.Не видит массив [дубликат]

На данный вопрос уже ответили:

135
Как добавить третий зависимый select

Как добавить третий зависимый select

Есть 2 селектора со странами и городами, как добавить третий в котором будут районы, что бы при выборе города, появлялся третий select с выбором...

148
Не подключается WebSocket

Не подключается WebSocket

Я пытаюсь из js файла подключиться к вебсокету на asp

118
Динамические списки JavaScript

Динамические списки JavaScript

Нужна система выпадающих списков, чтоб каждый появлялся только при выборе в предыдущем спискеТо есть, имеем Список 1

109