我有以下对象数组。
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;
});
答案 0 :(得分:1)
最简单的方法是构建一个数组数组,然后将它们展平。
首先,让我们像使用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);
答案 1 :(得分:1)
尝试以下
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)
答案 2 :(得分:1)
以下是使用下划线map和values函数的解决方案。映射的结果将是一个数组数组,因此flatten用于获取一个数组:
var result = _.chain(response)
.map(_.values)
.flatten()
.value();
答案 3 :(得分:0)
使用下面的代码,无论数组对象有多少个键,结果都将是一个扁平数组。
// 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']
答案 4 :(得分:0)
var normalizedArray = newlist.reduce(function (resultArray, nextObj) {
resultArray.push(nextObj.Data, nextObj.Note, nextObj.Id);
return resultArray;
}, []);
Array.prototype.reduce()
采用缩减函数和初始值作为第一个参数传递给该缩减函数,第二个参数是数组中的下一个元素。因为我们想要最终生成一个数组,这就是为什么有一个[]
答案 5 :(得分:0)
您可以使用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);