如何循环作为参数传递的对象的所有属性并更改其值?

时间:2015-12-09 09:12:40

标签: javascript loops object properties iteration

我传递的对象如下:

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以查看这是否是范围问题,但没有运气。

3 个答案:

答案 0 :(得分:1)

您的意思是将您传递的对象的所有属性作为参数循环,并将其值更改为“已更改”

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,因为您正在更改通过引用传递的对象值。

答案 1 :(得分:0)

我认为你正在寻找这个。您的变量不会作为'的一部分。'符号。您必须使用括号来完成此操作。

var func = function(change){
  for (var property in change) {
    if (func.hasOwnProperty(property)) {
      func[property] = "changed"
    }
  }
  return func
}

答案 2 :(得分:0)

如果您要更改所有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']