Javascript 从对象数组中的对象属性合并数组
给出一个对象数组,如下所示:Javascript 从对象数组中的对象属性合并数组,javascript,arrays,typescript,ecmascript-6,Javascript,Arrays,Typescript,Ecmascript 6,给出一个对象数组,如下所示: var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}]; 我想从fields属性获得一个合并项数组,输出应该是1,2,3,4 我试着合并如下。我对我的解决方案不满意,希望得到反馈并改进我的解决方案。我不熟悉JS和typescript。我相信有更好的解决方案具有ES6的功能。 有人能帮我改进解决方案吗 function mergeArraysFromO
var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}];
我想从fields属性获得一个合并项数组,输出应该是1,2,3,4
我试着合并如下。我对我的解决方案不满意,希望得到反馈并改进我的解决方案。我不熟悉JS和typescript。我相信有更好的解决方案具有ES6的功能。
有人能帮我改进解决方案吗
function mergeArraysFromObjectArray(objArray){
let allFields = [];
for (let obj of objArray) {
for (let propt in obj) {
if (obj.hasOwnProperty(propt) && propt === 'fields') {
allFields = allFields.concat(obj[propt]);
}
}
}
return allFields;
}
var objArray = [{'key': 'key1', 'fields': [1, 2]}, {'key': 'key2', 'fields': [3, 4]}];
let allMergedFields = mergeArraysFromObjectArray(objArray);
for(let i=0; i < allMergedFields.length; i++){
console.log(allMergedFields[i]); //prints - 1, 2, 3, 4
}
函数mergeArraysFromObjectArray(objArray){
让allFields=[];
for(让obj代表objArray){
for(让propt进入obj){
if(对象hasOwnProperty(propt)和&propt=='fields'){
allFields=allFields.concat(obj[propt]);
}
}
}
返回所有字段;
}
var objArray=[{'key':'key1','fields':[1,2]},{'key':'key2','fields':[3,4]}];
让allMergedFields=mergeArraysFromObjectArray(ObjectArray);
for(设i=0;i
您可以使用扩展语法…
和map()
来获取字段
属性
var objArray=[{'key':'key1','fields':[1,2]},{'key':'key2','fields':[3,4]}];
var result=[].concat(…objArray.map(({fields})=>fields))
console.log(result)
您可以使用扩展语法..
和map()
来获取字段
属性
var objArray=[{'key':'key1','fields':[1,2]},{'key':'key2','fields':[3,4]}];
var result=[].concat(…objArray.map(({fields})=>fields))
console.log(result)
您可以简单地concat
数组并在循环中创建一个新数组:
var objArray=[{'key':'key1','fields':[1,2]},{'key':'key2','fields':[3,4]}];
var结果=[];
对于(var i=0;i您可以简单地concat
数组并在循环中创建一个新数组:
var objArray=[{'key':'key1','fields':[1,2]},{'key':'key2','fields':[3,4]}];
var结果=[];
对于(var i=0;i,您可以与and组合使用
代码示例:
const objArray=[{key:'key1',fields:[1,2]},{key:'key2',fields:[3,4]}]
const result=objArray.reduce((a,{fields})=>[…a,…fields],])
console.log(结果)
您可以与和结合使用
代码示例:
const objArray=[{key:'key1',fields:[1,2]},{key:'key2',fields:[3,4]}]
const result=objArray.reduce((a,{fields})=>[…a,…fields],])
console.log(结果)
对于您希望审阅的工作代码,请参阅检查答案。这正是您想要的。我投票决定将此问题作为非主题关闭,因为它更适合建议作为非主题的问题,应该移至codereview.stackexchange.com,而不是以意见为基础关闭。对于您希望审阅的工作代码,请参阅检查回答这正是你想要的。我投票将这个问题作为离题题结束,因为它更适合作为离题建议的问题,应该移到codereview.stackexchange.com,而不是以意见为基础。这是你正确的做法:)Es6宝贝:)好工作这是你正确的做法:)Es6宝贝:)好工作
objArray.reduce((a, { fields }) => [...a, ...fields], [])