Javascript:替换对象属性值
如何用字符串替换obj的每个道具 预期结果:Javascript:替换对象属性值,javascript,object,Javascript,Object,如何用字符串替换obj的每个道具 预期结果: var obj = { prop1: "value1", prop2: "value2", prop3: "value3" } 作为在对象上循环的最佳实践,您应该使用hasOwnProperty来确保只覆盖属性而不覆盖函数,除非您100%确定循环不会发生在只包含属性的对象上,如示例中所示。第二个检查是确保它不会覆盖对象中存在的任何对象 var obj = { prop1: "foo", prop2: "foo",
var obj = {
prop1: "value1",
prop2: "value2",
prop3: "value3"
}
作为在对象上循环的最佳实践,您应该使用hasOwnProperty来确保只覆盖属性而不覆盖函数,除非您100%确定循环不会发生在只包含属性的对象上,如示例中所示。第二个检查是确保它不会覆盖对象中存在的任何对象
var obj = {
prop1: "foo",
prop2: "foo",
prop3: "foo"
}
只需在所有键上循环并将属性设置为所需的值
var obj={
建议1:“价值1”,
prop2:“value2”,
建议3:“价值3”
};
Object.keys(obj).forEach(函数(key){
obj[key]=“foo”;
});
document.write(''+JSON.stringify(obj,0,4)+'')代码>在属性上循环,并将每个属性的值设置为所需的值。hasOwnProperty
,obj
没有其他方法,不会继承任何可枚举的内容。我知道。不过,使用hasOwnProperty是一种最佳实践,这就是我提到它的原因。在某些情况下,对象可能包含不希望覆盖的其他对象类型。我刚刚发布的更新代码也解释了对象中的对象。不,这不是每天编写的处理数据对象的代码的最佳实践,只是多余的绒毛使代码难以阅读和理解。在可能需要处理实例的泛型(例如库)函数中使用它是一个很好的做法,而且,更新一点意义都没有。我既不理解这是为了防止什么(或者为什么有必要这样做),也不理解代码是否真正起作用typeof
永远不会产生“[object object]”
,而且大多数属性值都没有.toLowerCase()
方法,因此当您尝试调用它时,它会抛出。对我来说仍然没有意义。不需要toLowerCase
,为什么要排除对象?OP说他想替换每个属性。这可能对这个对象有效,但在某些情况下,这个对象可能包含其他对象、函数和属性。这不会覆盖这些成员的值以及字符串吗?我在问题中看不到这一要求。。。在现实世界中,赋值是由类型检查覆盖的。在我的世界中是这样的,但我设计框架和库,所以从我的角度来看,每当我不得不这样做时,我不能期望我的函数所使用的对象实际上只包含属性。顺便说一句,我喜欢你的for循环的样式。这样效率更高。
var obj = {
prop1: "value1",
prop2: "value2",
prop3: "value3",
prop4: {
test: "test"
}
}
for (var p in obj) {
if (obj.hasOwnProperty(p) && (typeof obj[p]) != "object") {
obj[p] = "foo"
}
}