如何循环作为参数传递的对象的所有属性并更改它们的值?
How to loop all properties from object passed as parameter and change their values?
我正在传递一个像这样的对象:
obj = {a:1,b:2,c:3}
我正在尝试将 1/2/3
更改为 changed
这是我的代码:
var func = function(change) {
for (var property in change) {
if (func.hasOwnProperty(property)) {
change.property = "changed"
return func
}
}
}
现在我的输出是没有改变的原始属性。
我尝试在 if 语句中返回 func
以查看这是否是范围问题但没有成功。
我想你正在找这个。您的变量不会作为“.”的一部分工作。符号。您必须使用括号来完成此操作。
var func = function(change){
for (var property in change) {
if (func.hasOwnProperty(property)) {
func[property] = "changed"
}
}
return func
}
如果你想改变所有argumetns
var func = function(){
for (var i=0;i<arguments.length;i++)
arguments[i]='changed'
return arguments;
}
例如:
func('a',b'c') // return ['changed','changed','changed']
你的意思是循环你作为参数传递的对象的所有属性并将它们的值更改为 "changed"
function func(change) {
Object.keys(change).forEach(function(key) {
change[key] = 'changed';
});
};
var obj = {
a: 1,
b: 2,
c: 3
};
func(obj);
console.log(obj);
您的函数不需要 return
,因为您正在更改通过引用传递的对象值。
我正在传递一个像这样的对象:
obj = {a:1,b:2,c:3}
我正在尝试将 1/2/3
更改为 changed
这是我的代码:
var func = function(change) {
for (var property in change) {
if (func.hasOwnProperty(property)) {
change.property = "changed"
return func
}
}
}
现在我的输出是没有改变的原始属性。
我尝试在 if 语句中返回 func
以查看这是否是范围问题但没有成功。
我想你正在找这个。您的变量不会作为“.”的一部分工作。符号。您必须使用括号来完成此操作。
var func = function(change){
for (var property in change) {
if (func.hasOwnProperty(property)) {
func[property] = "changed"
}
}
return func
}
如果你想改变所有argumetns
var func = function(){
for (var i=0;i<arguments.length;i++)
arguments[i]='changed'
return arguments;
}
例如:
func('a',b'c') // return ['changed','changed','changed']
你的意思是循环你作为参数传递的对象的所有属性并将它们的值更改为 "changed"
function func(change) {
Object.keys(change).forEach(function(key) {
change[key] = 'changed';
});
};
var obj = {
a: 1,
b: 2,
c: 3
};
func(obj);
console.log(obj);
您的函数不需要 return
,因为您正在更改通过引用传递的对象值。