试图将新的键/值对推送到数组不起作用

时间:2017-01-24 15:34:33

标签: javascript angularjs

我尝试使用angular.forEach将用户的第一个和最后一个首字母推送到我的用户联系人信息的对象数组中,并且我做得不对。

这是我的代码:

var firstInit = '';
var lastInit = '';

angular.forEach(self.contacts, function(value, key){
  firstInit = key.first_name.charAt(0);
  lastInit = key.last_name.charAt(0);
  this.push(firstInit + ':' + lastInit);
});

但是我得到了TypeError:无法读取属性' charAt'未定义的

有什么建议吗?

更新

我将代码更改为以下内容,现在我可以获取值,但是当我尝试按下联系人对象时,我正在"推送"不是一个功能。虽然如果我带走"键"我可以推送缩写,但它们位于数组的根部,而不是我希望它们存在于每个对象中。

以下是代码:

var firstInit = '';
var lastInit = '';

angular.forEach(self.contacts, function(value, key){

    firstInit = self.contacts[key].first_name.charAt(0);
    lastInit = self.contacts[key].last_name.charAt(0);

    self.contacts[key].push(firstInit + lastInit);

});

2 个答案:

答案 0 :(得分:0)

您的联系人中某处<div class="page-header"> <h1>Please wait...</h1> </div> <div class="row"> <div class="col-md-6 col-sm-6"> <form method="post" action="{responseUri}"> {responseFields} </form> </div> </div> key.first_name未定义。这是一个可能的解决方案:

key.last_name

答案 1 :(得分:0)

以下是修复:

var inits = '';
var newContacts = [];

angular.forEach(self.contacts, function(value, key){
  console.log(value.first_name);
  inits = self.contacts[key].first_name.charAt(0) + self.contacts[key].last_name.charAt(0);
  value.userInitials = inits;
  newContacts.push(value);
});

或者,我可以使用“value”而不是获取索引/键。这让我得到了名字字段。我创建了一个新的对象数组并推送了值。我用点符号添加了新的键/值对。