尝试转换对象的对象:
var items: {
item_a: {
state: 'item_a status'
},
item_b: {
state: 'item_b status'
}
};
到一个对象数组中,同时向对象添加一个新的数组元素(对象键):
var items = [{
name: 'item_a',
state: 'item_a status'
}, {
name: 'item_b',
state: 'item_b status'
}];
我的天真尝试是有效的:
var arrayOfItems = [];
for(var x in items){
var itemObj = {
name: x
};
for(var y in items[x]){
itemObj[y] = items[x][y];
}
arrayOfItems.push(itemObj);
}
我想知道是否有更简洁的方法来做这件事,使用Underscore / LoDash?
答案 0 :(得分:1)
我会使用map():
_.map(items, function(item, key) {
return _.assign({ name: key }, item);
});
// →
// [
// {
// name: 'item_a',
// state: 'item_a status'
// },
// {
// name: 'item_b',
// state: 'item_b status'
// }
// ]
由于map()
总是返回一个数组,所以你就到了一半。您只需要回调来生成数组项。您可以使用assign()函数设置新的name
属性,然后添加其余属性。
答案 1 :(得分:0)
RAC(self.headline, text) = RACObserve(self.viewModel, mainCourse);