让我们假设我有对象,如;
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)
这是正确的方法吗?
编辑:感谢您的所有答案。但是这个对象也可以包含对象。因此,我应该循环遍历所有键并使其无效,如您的示例所示。我是对的吗?
答案 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);