打字稿 - 将拆分的字符串推送到数组

时间:2017-06-19 12:19:10

标签: javascript angular typescript ecmascript-6

我使用angular 2编写应用程序。

我有一个输入,我想输入字符串列表,然后用逗号分隔它们。

输入:Item1,Item2,Item3

输入字符串我必须用逗号分隔。

addItems(toSplit: string) {
   splitted: string[] = toSplit.split(",");
}

我有一个对象:

export class Foo {
   items: string[];
}

如何将所有拆分字符串推送到foo.items?

3 个答案:

答案 0 :(得分:2)

  

我有一个对象

那不是一个对象,它是一个类。 (好的,授予它,一个对象。)要访问items,首先需要一个实例来访问它:

const instanceOfFoo: Foo = new Foo();

然后,一旦你拥有了那个实例并且你拥有了来自split的数组,你可以:

  1. 替换<{1}}实例上的数组:

    Foo

  2. 添加到您的商品中(例如,如果您使用相同的instanceOfFoo.items = splitted; 多次执行此操作):

    Foo

    instanceOfFoo.items.push(...splitted); 是扩展符号,应该通过转换在TypeScript中支持。如果你想成为老式的话:

    ...
  3. 如果您已经在之前创建了分裂字符串,则创建instanceOfFoo.items.push.apply(instanceOfFoo.items, splitted); ,您可以将其作为构造函数的参数提供,然后在构造函数中执行其中一个,以更适合您的方式需要:

    Foo

    // Using the array provided directly
    export class Foo {
        constructor(public items: string[] = []) {
        }
    }
    

    然后使用其中任何一个:

    // Copying the given array
    export class Foo {
        public items: string[] = [];
        constructor(items: string[]) {
            this.items.push(...items);
        }
    }
    

    附注:您在方法中错过了const instanceOfFoo: Foo = new Foo(splitted); let(我认为这是一种方法,因为前面缺少const ):

    function

答案 1 :(得分:1)

您可以为constructor课程创建typescript

export class Foo {
   constructor(private items: string[]){}
}

现在,您可以创建一个包含拆分数组的类对象。

var foo = new Foo(splitted);

答案 2 :(得分:1)

试试这个:)

class Split {
    splitted: string[];
    addItems(toSplit: string) {
        this.splitted = toSplit.split(",");
    }
}


export class Foo {
    items: string[];
}

var demo = new Foo();
var test = new Split();
test.addItems("Item1,Item2,Item3");

demo.items = test.splitted;

console.log(demo.items);