我有一个键和值的对象(对象数组)
Obj:{
key1: [{desc:'aaa', pos:0}, {desc:'bbb', pos:1}],
key2: [{desc:'ccc', pos:0}, {desc:'ggg', pos:1}],
key3: [{desc:'ddd', pos:0}, {desc:'jjj', pos:1}],
key4: [{desc:'eee', pos:0}, {desc:'kkk', pos:1}]
}
从上面...我需要为对象中的每个键获取一个对象数组。因此,我需要获取位置0的desc属性并分配给下面的text1。文本2和文本3将被硬编码。
data = [
{
text1: 'aaa',
text2: 'name2',
text3: '29/112/2017',
},
{
text1: 'ccc',
text2: 'name2',
text3: '29/12/2017',
},
{
text1: 'ddd',
text2: 'name2',
text3: '29/12/2017',
},
{
text1: 'eee',
text2: 'name2',
text3: '29/12/2017',
},
]
尝试了以下操作,但不起作用...
var values = Object.values(obj); - would give me an array of array of objects
values.map((item, index) => {
item.map((i, x) => {
if(i.pos == 0)
{
return(
{
text1: i.desc,
text2: 'name2'
text3: '29/12/2017'
}
)
}
})
我如何获得类似“数据”数组的结构?
答案 0 :(得分:1)
无需使用item.map
。您只关心item[0]
,因此只需将其直接编入索引即可。
var obj = {
key1: [{desc:'aaa', pos:0}, {desc:'bbb', pos:1}],
key2: [{desc:'ccc', pos:0}, {desc:'ggg', pos:1}],
key3: [{desc:'ddd', pos:0}, {desc:'jjj', pos:1}],
key4: [{desc:'eee', pos:0}, {desc:'kkk', pos:1}]
};
var values = Object.values(obj);
var result = values.map(item => ({
text1: item[0].desc,
text2: 'name2',
text3: '29/12/2017'
}));
console.log(result);
答案 1 :(得分:0)
正如Barmar指出的那样,因为map返回一个数组,所以不需要单独的数组。我已经修复了您的代码,因此您可以了解如何将数据动态推入数组:
data = []
var values = Object.values(Obj)
values.map ((item , index)=>{
item.map((i , x)=>{
if(i.pos == 0){
data.push({
"text1": i.desc,
"text2": 'name2',
"text3": '29/12/2017'
})
}
})
})
console.log(data)
答案 2 :(得分:0)
var obj = {
key1: [{desc:'aaa', pos:0}, {desc:'bbb', pos:1}],
key2: [{desc:'ccc', pos:0}, {desc:'ggg', pos:1}],
key3: [{desc:'ddd', pos:0}, {desc:'jjj', pos:1}],
key4: [{desc:'eee', pos:0}, {desc:'kkk', pos:1}]
};
var data = [];
Object.keys(obj).forEach(function(key, value){
var dict = {};
dict.text1 = obj[key][0].desc;
dict.text2 = 'name2';
dict.text3 = '29/112/2017'
data.push(dict);
});
console.log(data);