Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组中的对象属性合并数组_Javascript_Arrays_Typescript_Ecmascript 6 - Fatal编程技术网

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], [])