如何在javascript中使对象值无效

时间:2016-11-29 14:28:54

标签: javascript object null

让我们假设我有对象,如;

 import React, { Component } from 'react';
 import { render } from 'react-dom';
 import {Router, Route} from 'react-router';

class Home extends Component {
render(){
    return (<h1>Hello</h1>);
}
}

render(
<Router>
    <Route path="/" component={Home}/>
</Router>,
document.getElementById('container')
 );'

我想将所有值取消为;

var obj = {
    name: "alex",
    surname: "black",
    age: 21,
    grade: 14
}

我该怎么做?我可以通过var obj = { name: "", surname: "", age: 0, grade: 0 } 查看密钥,并根据其类型使每个密钥无效。

像;

Object.keys(obj)

这是正确的方法吗?

编辑:感谢您的所有答案。但是这个对象也可以包含对象。因此,我应该循环遍历所有键并使其无效,如您的示例所示。我是对的吗?

3 个答案:

答案 0 :(得分:2)

使用for..in循环迭代对象属性:

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        obj[prop] = { string: '', number: 0 }[typeof obj[prop]];
    }
}

或许可以在循环中使用switch

switch (typeof obj[prop]) {
    case 'string':
        obj[prop] = '';
        break;

    case 'number':
        obj[prop] = 0;
        break;

    default:
        obj[prop] = null;
}

答案 1 :(得分:0)

Object.keys(obj).forEach(function(key) {
    console.log(key, obj[key]);
    if(type of obj[key] === "string")
      // do something
    if(type of obj[key] === "integer")
      // do something

});

答案 2 :(得分:0)

像其中任何一个:

for/in(用于迭代对象的所有属性)或

Object.keys(obj).forEach(f)(获取对象的OWN属性的数组并循环它们)

var obj = {
    name: "alex",
    surname: "black",
    age: 21,
    grade: 14,
    someObject: {dob: "12/16/66", address: "10 Main Street"}
}

var obj2 = {
    name: "alex",
    surname: "black",
    age: 21,
    grade: 14,
    someObject: {dob: "12/16/66", address: "10 Main Street"}
}

// Using for/in
function reset(obj){
  for(var k in obj){
   switch(typeof obj[k]){
       case "string":
          obj[k]="";
          break;
       case "number":
          obj[k]= 0;
          break;
       case "boolean":
          obj[k]= false;
          break;
       case "object":
          obj[k]= null;
          break;       
   }
  }
}

// Using Object.keys()
function reset2(obj){
  Object.keys(obj).forEach(function(k){
   switch(typeof obj2[k]){
       case "string":
          obj[k]="";
          break;
       case "number":
          obj[k]= 0;
          break;
       case "boolean":
          obj[k]= false;
          break;
       case "object":
          obj[k]= null;
          break;       
   }
  });
}

reset(obj);
console.log(obj);

reset2(obj2);
console.log(obj2);