javascript:动态添加一个不工作的属性

javascript:动态添加一个不工作的属性,javascript,node.js,Javascript,Node.js,下面是一个大文件的片段,使用node.js编写。 用户对象数组已发送到函数。如果为该用户定义了频率,我想将其作为属性添加到用户对象中,但这是徒劳的 var usersFromActiveDomains = []; function sample (users) { _.forEach ( users , function ( user ) { var freq = getFrequency(user); if(freq) { user.frequency =

下面是一个大文件的片段,使用node.js编写。 用户对象数组已发送到函数。如果为该用户定义了频率,我想将其作为属性添加到用户对象中,但这是徒劳的

var usersFromActiveDomains = []; 
function sample (users) {
  _.forEach (  users , function ( user ) {
    var freq = getFrequency(user);
    if(freq) {
      user.frequency = freq;
      usersFromActiveDomains.push(user);
      console.log('user', user);
    } 
  });
  return usersFromActiveDomains;
}

很难说这是怎么回事,因为我们没有所有的事实。然而,我猜“freq”返回false,从而使“usersfromactivedomes”为空。我制作了一个工作JSFIDLE供您参考:

代码如下:

var usersFromActiveDomains = [],
   baseUsers = [
      {
        name: "sam"
      },
      {
        name: "julie"
      },
      {
        name: "jimbolina"
      }
   ],
   getFrequency = function (u) {
      return u.name.length;
   },
   process = function (users) {
    _.forEach ( users , function ( user ) {
      console.log(user);
      var freq = getFrequency(user);
      if(freq) {
        user.frequency = freq;
        usersFromActiveDomains.push(user);
        console.log('user', user);
      } 
    });
    return usersFromActiveDomains;
  }
usersList2 = process(baseUsers);
console.log('baseUsers:',baseUsers);
console.log('usersFromActiveDomains:',usersFromActiveDomains);
console.log('usersList2:',usersList2);

我希望这能有所帮助。

很难说这是怎么回事,因为我们没有所有的事实。然而,我猜“freq”返回false,从而使“usersfromactivedomes”为空。我制作了一个工作JSFIDLE供您参考:

代码如下:

var usersFromActiveDomains = [],
   baseUsers = [
      {
        name: "sam"
      },
      {
        name: "julie"
      },
      {
        name: "jimbolina"
      }
   ],
   getFrequency = function (u) {
      return u.name.length;
   },
   process = function (users) {
    _.forEach ( users , function ( user ) {
      console.log(user);
      var freq = getFrequency(user);
      if(freq) {
        user.frequency = freq;
        usersFromActiveDomains.push(user);
        console.log('user', user);
      } 
    });
    return usersFromActiveDomains;
  }
usersList2 = process(baseUsers);
console.log('baseUsers:',baseUsers);
console.log('usersFromActiveDomains:',usersFromActiveDomains);
console.log('usersList2:',usersList2);

我希望这会有所帮助。

user
是在迭代方法中创建的新对象;它不会更新
用户
数组。您需要使用迭代和索引,并使用
users[idx]
覆盖数组。谢谢remus,但是,我确实编辑了文章来更正我的问题。您的函数没有名称。你怎么称呼它?它是一个回调,而您没有显示代码的其余部分吗?是否定义了freq?Console.log进行确认。我不显示其余代码。编写了一个模拟我所面临问题的示例代码。为更可读的代码添加函数名。
user
是迭代方法期间创建的新对象;它不会更新
用户
数组。您需要使用迭代和索引,并使用
users[idx]
覆盖数组。谢谢remus,但是,我确实编辑了文章来更正我的问题。您的函数没有名称。你怎么称呼它?它是一个回调,而您没有显示代码的其余部分吗?是否定义了freq?Console.log进行确认。我不显示其余代码。编写了一个模拟我所面临问题的示例代码。为更可读的代码添加函数名。我的函数从使用Mongoose构建的API接收的“用户”。因为猫鼬有DB模式,这有关系吗?这个问题还没有解决,作为一个天真的node.js开发人员,我认为我遗漏了一些基本点。“用户”只是在你的函数中定义的。这就是为什么我将用户分解成一组不同的数组-向您展示信息是如何存储的。无论如何,听起来你想把这些信息发回到服务器上,这样你的编辑就会存储在数据库中。如果没有关于您的环境和您正在尝试做什么的更多细节,恐怕我无法提供更多帮助。我的函数从使用Mongoose构建的API接收的“用户”。因为猫鼬有DB模式,这有关系吗?这个问题还没有解决,作为一个天真的node.js开发人员,我认为我遗漏了一些基本点。“用户”只是在你的函数中定义的。这就是为什么我将用户分解成一组不同的数组-向您展示信息是如何存储的。无论如何,听起来你想把这些信息发回到服务器上,这样你的编辑就会存储在数据库中。如果没有关于你的环境和你想做什么的更多细节,恐怕我帮不了你。