在AngularJS中将数组转换为字符串

时间:2016-02-05 14:04:23

标签: javascript arrays angularjs

我试图将一个字符串数组转换为单个字符串。我用基本的术语快速了解了我需要的东西:

https://plnkr.co/edit/t2KeZJ8yOtDo2KxDQuzD?p=preview

在应用程序中我正在处理我需要使用两个不同的控制器,我为控制器创建了一个工厂来共享数据,因此我将示例设置为这样。

这是我试图用来循环数组并添加到范围变量的函数,其中CherryPick是数组:

cherryCtrl.CherryPick = CherryPick.list;
cherryCtrl.string = cherryCtrl.output;


cherryCtrl.runString = function createString(array) {

    angular.forEach(cherryCtrl.CherryPick, function (object) {
        angular.forEach(object, function (value, key) {
            cherryCtrl.output += value + '  ';

            console.log(cherryCtrl.output);
        });
    });
    return cherryCtrl.output;

}

输出控制台给出:

undefinedHello World  
undefinedHello World  object:5  
undefinedHello World  object:5  Goodbye World  
undefinedHello World  object:5  Goodbye World  object:8 

这令人困惑。

我从这里接受了循环的想法:

Array to string angular

任何指针都会很受欢迎

1 个答案:

答案 0 :(得分:0)

所以,这段代码的主要问题是

CherryPick.list.push({
    snippet
});

在旧浏览器中没有实现ES6,此代码引发异常:Syntax Error,但在新标准中这个

{ snippet }

Shorthand property names (ES6),因此您推送列出的不是字符串而是对象 - {snippet: "snippetvalue"}

绑定到视图后,在对象中添加了特殊的角度属性 $$ hashKey ,其值为 object:5 ,这就是你在输出中看到意外字符串的原因。

对于解决方案,您可以添加字符串而不是对象

CherryPick.list.push(// NOTE: without curly brackets
    snippet
);