简体   繁体   English

JavaScript中的数组过滤器数据

[英]Array filter data in javascript

I have working array filter using javascript and lodash. 我有使用javascript和lodash的工作数组过滤器。 I want to converts array of array into a single array. 我想将数组数组转换为单个数组。 Anyone can you tell converts in single array. 您可以告诉任何人转换为单个数组。

Input data 输入数据

const inputData = [
  [
    { 'Tempe(C)': 12 },
    { 'Tempe(C)': 13 },
    { 'Tempe(C)': 14 },
    { 'Tempe(C)': 15 }
  ],
  [
    { 'Tempe(C)': 22 },
    { 'Tempe(C)': 23 },
    { 'Tempe(C)': 24 },
    { 'Tempe(C)': 25 }
  ],
  [
    { 'Tempe(C)': 32 },
    { 'Tempe(C)': 33 },
    { 'Tempe(C)': 34 },
    { 'Tempe(C)': 35 }
  ],
];

I want this structure of output 我想要这种输出结构

const outputData = [
  [12, 13, 14, 15],
  [22, 23, 24, 25],
  [32, 33, 34, 35],      
];

You could use Object.values and map 您可以使用Object.valuesmap

 const inputData = [[{"Tempe(C)":12},{"Tempe(C)":13},{"Tempe(C)":14},{"Tempe(C)":15}],[{"Tempe(C)":22},{"Tempe(C)":23},{"Tempe(C)":24},{"Tempe(C)":25}],[{"Tempe(C)":32},{"Tempe(C)":33},{"Tempe(C)":34},{"Tempe(C)":35}]]; const output = inputData.map(arr => arr.map(a => Object.values(a)[0])) console.log(output) 

If flat is supported in your browser: 如果您的浏览器支持flat

 const inputData = [[{"Tempe(C)":12},{"Tempe(C)":13},{"Tempe(C)":14},{"Tempe(C)":15}],[{"Tempe(C)":22},{"Tempe(C)":23},{"Tempe(C)":24},{"Tempe(C)":25}],[{"Tempe(C)":32},{"Tempe(C)":33},{"Tempe(C)":34},{"Tempe(C)":35}]] const output = inputData.map(arr => arr.map(Object.values).flat()) console.log(output) 

(This works for any key. If the key is always Tempe(C) , @eol's answer is a much better option) (这适用于任何键。如果键始终为Tempe(C) ,则@eol的答案是更好的选择)

If Tempe(C) is always the key for the values, you can simply do: 如果Tempe(C)始终是值的键,则可以执行以下操作:

 const inputData=[[{"Tempe(C)":12},{"Tempe(C)":13},{"Tempe(C)":14},{"Tempe(C)":15}],[{"Tempe(C)":22},{"Tempe(C)":23},{"Tempe(C)":24},{"Tempe(C)":25}],[{"Tempe(C)":32},{"Tempe(C)":33},{"Tempe(C)":34},{"Tempe(C)":35}]]; const output = inputData.map(arr => arr.map(data => data['Tempe(C)'])); console.log(output) 

Hi Ragu here is how you can achieve the wanted result : 您好Ragu,这是您如何达到所需结果的方法:

var inputData = [
    [
      { 'Tempe(C)': 12 },
      { 'Tempe(C)': 13 },
      { 'Tempe(C)': 14 },
      { 'Tempe(C)': 15 }
    ],
    [
      { 'Tempe(C)': 22 },
      { 'Tempe(C)': 23 },
      { 'Tempe(C)': 24 },
      { 'Tempe(C)': 25 }
    ],
    [
      { 'Tempe(C)': 32 },
      { 'Tempe(C)': 33 },
      { 'Tempe(C)': 34 },
      { 'Tempe(C)': 35 }
    ],
  ];

var newstructure = [];

for(var i in inputData){
    newstructure[i] = [];
    for(var j in inputData[i]){
        newstructure[i][j] = inputData[i][j]["Tempe(C)"];
    }
}


With lodash you can use nested _.map() calls to get the result: 使用lodash,您可以使用嵌套的_.map()调用来获取结果:

 const data = [[{"Tempe(C)":12},{"Tempe(C)":13},{"Tempe(C)":14},{"Tempe(C)":15}],[{"Tempe(C)":22},{"Tempe(C)":23},{"Tempe(C)":24},{"Tempe(C)":25}],[{"Tempe(C)":32},{"Tempe(C)":33},{"Tempe(C)":34},{"Tempe(C)":35}]] const result = _.map(data, o => _.map(o, 'Tempe(C)')) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> 

And the same idea using lodash/fp : 和使用lodash / fp的想法相同:

 const fn = _.map(_.map('Tempe(C)')) const data = [[{"Tempe(C)":12},{"Tempe(C)":13},{"Tempe(C)":14},{"Tempe(C)":15}],[{"Tempe(C)":22},{"Tempe(C)":23},{"Tempe(C)":24},{"Tempe(C)":25}],[{"Tempe(C)":32},{"Tempe(C)":33},{"Tempe(C)":34},{"Tempe(C)":35}]] const result = fn(data) console.log(result) 
 <script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM