如何在angularjs Ionic中将对象转换为数组

时间:2016-10-30 11:26:19

标签: javascript angularjs arrays object ionic-framework

让我们说我的对象看起来像这样:{first:" asdasd",second:" asdas",third:" dasdas&#34 ;,四:" sdasa"} 我需要将此对象转换为数组。

    foreach (var c in list)
        {
            TableRow row = new TableRow();

            TableCell c0 = new TableCell();
            c0.Text = string.Format("<img src='"+c.Movie_poster+ "'/>");
            TableCell c1 = new TableCell();
            c1.Text = c.Name;
            TableCell c2 = new TableCell();
            c2.Text = c.Date.ToStirng();
            TableCell c3 = new TableCell();
            c3.Text = c.desc;
            TableCell c4 = new TableCell();
            c4.Text = c.genre;
            TableCell c5 = new TableCell();


            //Add each string to cell in row
            row.Cells.Add(c0);
            row.Cells.Add(c1);
            row.Cells.Add(c2);
            row.Cells.Add(c3);
            row.Cells.Add(c4);
            row.Cells.Add(c5);

            //Add the row to the table
            Table.Rows.Add(row);
            Button getname = new Button();
            getname.Text = "Reserve";
            getname.Click+= new EventHandler(getname_Click);

            c5.Controls.Add(getname);

        }


    }
    protected void reserve_Click(object sender,EventArgs e)
    {
        Button btn = (Button)sender;
        TableRow row = (TableRow)btn.
        string name = row.Cells[1].Text;
        lbl.Text = name;

    }

我目前正在使用此代码,但我认为这是错误的方法。那么我怎么能把它改成看起来像[&#34; asdasd&#34;,&#34; asdas&#34;,&#34; dasdas&#34;,&#34; sdasa&#34;,&# 34; asdasd&#34;,&#34; asdas&#34;,&#34; dasdas&#34;,&#34; sdasa&#34;]。 当我在ng-repeat中使用对象时,离子拖放指令不起作用。当我将数组应用于ng-repeat时,它可以正常工作。

3 个答案:

答案 0 :(得分:2)

有几种方法可以做到。

一个人会使用Object.keys

Object.keys(values).forEach(function(key) {
   userData.push(values[key]);
});

你也可以像这样使用for ... in

for (var key in values) {
    userData.push(value[key]);
}

如果你的对象有从prototype继承的任何属性,那么它也会显示,所以你需要检查属性是否真的属于这个实例:

for (var key in values) { //proper way to iterate keys using for..in
    if(values.hasOwnProperty(key)) { 
        userData.push(value[key]);
    }
}

由于您使用的是角色,因此您也可以使用angular.forEach

angular.forEach(values, function(value){
    userData.push(value);
});

我觉得这对你来说是最干净的解决方案。

答案 1 :(得分:2)

我建议使用javascript库underscorejs或lodash进行这种数组和对象操作和迭代,因为它似乎是最好的方法,保持代码清洁。 它是一个简单的javascript文件,您可以将其包含在项目中,并且您不必做任何复杂的事情来使其工作。只需即插即用。

如果你确实包括下划线/ lodash,你所要做的就是: -

var mycoll =  _.values(yourobjectvariable);

这将获取该对象中的所有值,并自动将其转换为数组。

http://underscorejs.org/#values

或者如果您想使用普通的javascript,我认为上面的Randall Flag的答案就足够了。

答案 2 :(得分:1)

`

        if(values)
    {
Object.keys(values).forEach(function(key) {
   userData.push(values[key]);
});
    }

` 有时候我们不是一个简单的解决方案而是考虑太多,最终会得到复杂的时间解决方案,我们可以通过简单的小代码实现这一点