Javascript 尝试将新的键/值对推送到数组不工作
我试图使用angular.forEach将用户的第一个和最后一个首字母推送到用户联系信息的对象数组,但我做得不对 以下是我的代码:Javascript 尝试将新的键/值对推送到数组不工作,javascript,angularjs,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(f
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'
有什么建议吗
更新:
我将代码改为下面的代码,现在我可以得到值,但是当我尝试推到contacts对象上时,我得到的“推”不是一个函数。虽然如果我去掉“key”,我可以推送首字母,但它们在数组的根上,而不是我希望它们在每个对象中的位置
代码如下:
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);
});
key.first\u name
或key.last\u name
在您的联系人中未定义。这是一个可能的解决方案:
var firstInit = '';
var lastInit = '';
angular.forEach(self.contacts, function(value, key){
if (key.first_name)
firstInit = key.first_name.charAt(0);
if (key.last_name)
lastInit = key.last_name.charAt(0);
this.push(firstInit + ':' + lastInit);
});
以下是修复方法:
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”而不是获取索引/键。这给了我名字字段。我创建了一个新的对象数组并按下了值。我用点符号添加了新的键/值对。plz在声明和/或操作
first_name
和last_name
的地方发布代码。在将值分配给firstInit
之前,放置console.log(key.first_name)
,很可能是键。未定义的中的first\u name
类型错误:无法读取未定义的的属性'charAt'表示键。first\u name
未定义key
可能是一个字符串而不是对象。self.contacts
是数组,将具有push
功能self.contacts[key]
是数组中的一项,不具有push
功能。请通读一遍谢谢,马特。我已经想出了部分解决办法。查看我的编辑。感谢你在这方面的帮助!没问题。你到底想用这些首字母做什么?看起来您正试图将它们推回到从中获取它们的数组的顶部,只是在一个不同的索引中。你的目标是什么?了解每个contacts对象的外观可能会有所帮助。