Javascript:迭代对象并连接字符串

LPe*_*R90 5 javascript string iteration string-concatenation angularjs

我有一个 Javascript 对象,其中包含其他对象。每个包含的对象都有一个name属性。

我现在想做的是将这些名称属性连接到一个字符串。'and'但是,我希望这些字符串在最后一个字符串之前用逗号分隔。

为了更好地理解,我想要迭代的对象如下所示:

var objects = {
    o1: {name: 'name1'}, 
    o2: {name: 'name2'},
    o3: {name: 'name3'}
};
Run Code Online (Sandbox Code Playgroud)

现在我最终想要的字符串是:'Concatenation of name1, name2 and name3'

到目前为止我尝试过使用angular.forEach

var myString = 'Concatenation of ';

angular.forEach(objects, function(o) {
    myString += o.name + ', ';
}
Run Code Online (Sandbox Code Playgroud)

不难注意到,我的字符串将变成'Concatenation of name1, name2, name3, '.

所以真正的问题是我如何检查我在对象中的哪个位置,并通过连接'and'而不是逗号或根本不使用逗号来做出适当的反应。我怎样才能做到这一点?

wer*_*ero 6

使用传统的 for 循环:

var myString = 'Concatenation of ';
var i = 0;
var keys = Object.keys(objects);
for (i =0; i<keys.length; i++) {
   if (i > 0)
      myString += (i < keys.length - 1) ? ', ' : ' and ';
   myString += objects[keys[i]].name;
}
Run Code Online (Sandbox Code Playgroud)

  • “objects”是一个对象而不是数组,因此没有“length”属性。另外“o”是从哪里来的? (3认同)