让我们说我的对象看起来像这样:{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时,它可以正常工作。
答案 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]);
});
}
` 有时候我们不是一个简单的解决方案而是考虑太多,最终会得到复杂的时间解决方案,我们可以通过简单的小代码实现这一点