[英]how to convert an array of objects into an array
我有以下对象的数组。
response: [0]
Data: '455'
[1]
Data: '456'
[2]
Data: '457'
var normalizedArray = newlist.map(function (obj) {
return obj.Data;
});
我可以使用上述函数将上述Object数组转换为'notmalizedArray'数组。 这有效,并给我以下输出。
normalizedArray= ['455', '456', '457'];
如果不是只有1个元素,我有以下对象数组。
response: [0]
Data: '455'
Note: 'tre'
Id: '4'
[1]
Data: '456'
Note: 'bre'
Id: '5'
[2]
Data: '457'
Note: 'cre'
Id: '6'
我想要上述对象数组的以下数组输出。
normalizedArray = ['455', 'tre', '4', '456', 'bre', '5', '457', 'cre', '6']
有人可以让我知道在下面的函数中要更改为达到上面显示的normalizedArray的内容。
var normalizedArray = newlist.map(function (obj) {
return obj.Data;
});
最简单的方法是建立一个数组数组,然后将它们展平。
首先,让我们像以前一样使用map
构建数组:
// ES6
let normalizedArr = response.map(function({Data, Note, Id}) {
return [Data, Note, Id];
});
// before ES6
var normalizedArr = response.map(function(obj) {
return [obj.Data, obj.Note, obj.Id];
});
然后我们将其展平。 没有flatten
Javascript函数:我们只需使用Array#concat
将每个数组依次附加到一个空数组中:
// ES6
let finalArr = [].concat(...normalizedArr);
// before ES6
var finalArr = Array.prototype.concat.apply([], normalizedArr);
尝试跟随
var normalizedArray = newlist.map(function (obj) {
return [obj.Data,obj.Note,obj.Id];
});
var res = [];
normalizedArray .forEach(function(arr){res = res.concat(arr);})
console.log(res)
使用下面的代码,无论数组对象有多少个键,结果始终是一个扁平的数组。
// ES5
var normalizedArray = [];
response.forEach(function(obj) {
Object.keys(obj).forEach(function(ele) {
normalizedArray.push(obj[ele]);
});
});
console.log(normalizedArray); // => ['455', 'tre', '4', '456', 'bre', '5', '457', 'cre', '6']
// ES6 one liner
let normalizedArray = [];
response.forEach(obj => Object.keys(obj).forEach(ele => normalizedArray.push(obj[ele])));
console.log(normalizedArray); // => ['455', 'tre', '4', '456', 'bre', '5', '457', 'cre', '6']
var normalizedArray = newlist.reduce(function (resultArray, nextObj) {
resultArray.push(nextObj.Data, nextObj.Note, nextObj.Id);
return resultArray;
}, []);
Array.prototype.reduce()
具有一个约简函数和一个初始值,该值作为第一个参数传递给该约简函数,第二个参数是数组中的下一个元素。 因为我们想最后生成一个数组,所以才有[]
您可以使用concat来做到这一点:
var myArray = [ { Data: '455', Note: 'tre', Id: '4' }, { Data: '456', Note: 'bre', Id: '5' }, { Data: '457', Note: 'cre', Id: '6' } ]; var arr = myArray.map(function(obj) { return Object.keys(obj).map(function (key) { return obj[key]; });; }); var merged = [].concat.apply([], arr); console.log(merged);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.