Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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/3/html/88.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_Filter - Fatal编程技术网

Javascript 如何将数组转换为对象

Javascript 如何将数组转换为对象,javascript,arrays,filter,Javascript,Arrays,Filter,我试图将一组人的对象过滤成一个新对象,其属性名称按年龄排列,每个对象都在一个单独的数组中 例1 输入: groupAdultsByAgeRange([{name: "Henry", age: 9}, {name: "John", age: 20}]) groupAdultsByAgeRange([{name: "Anna", age: 31}, {name: "John", age: 32}, {name: "Hank", age: 60}]) 结果: { '20 and younger':

我试图将一组人的对象过滤成一个新对象,其属性名称按年龄排列,每个对象都在一个单独的数组中

例1 输入:

groupAdultsByAgeRange([{name: "Henry", age: 9}, {name: "John", age: 20}])
groupAdultsByAgeRange([{name: "Anna", age: 31}, {name: "John", age: 32}, {name: "Hank", age: 60}])
结果:

{ '20 and younger': [ { name: 'John', age: 20 } ] }
{ 
  '31-40': [ { name: 'Anna', age: 31 }, { name: 'John', age: 32 } ],
  '51 and older': [ { name: 'Hank', age: 60 } ] 
}
例2 输入:

groupAdultsByAgeRange([{name: "Henry", age: 9}, {name: "John", age: 20}])
groupAdultsByAgeRange([{name: "Anna", age: 31}, {name: "John", age: 32}, {name: "Hank", age: 60}])
结果:

{ '20 and younger': [ { name: 'John', age: 20 } ] }
{ 
  '31-40': [ { name: 'Anna', age: 31 }, { name: 'John', age: 32 } ],
  '51 and older': [ { name: 'Hank', age: 60 } ] 
}
如果年龄范围不在输入中,则不应成为输出的一部分。例如,如果输入中没有51岁以上的人,则对象不应包含“51岁及以上”的属性。如果输入为空数组,则输出应为空对象。

使用您可以执行以下操作

const _ = require('lodash');

const array = [{name: "Anna", age: 31}, {name: "John", age: 32}, {name: "Hank", age: 60}];

function ageToRange(obj) {
  const age = obj.age;
  if (age <= 20) {
    return '20 and younger';
  } 
  if (age > 30 && age <= 40) {
    return '31-40'
  }
  if (age > 50) {
    return '51 and older';
  }
}

const result = _.groupBy(array, ageToRange)

console.log(result);
const=require('lodash');
const数组=[{name:“Anna”,年龄:31},{name:“John”,年龄:32},{name:“Hank”,年龄:60}];
函数ageToRange(obj){
常量年龄=对象年龄;
如果(30岁和50岁){
返回“51岁及以上”;
}
}
常量结果=u2;.groupBy(数组,ageToRange)
控制台日志(结果);

这是如何使用本机Javascript的:

//示例1
让人们1=[{姓名:“亨利”,年龄:9},{姓名:“约翰”,年龄:20}]
让年轻的_和_等于_20=[]
人1.forEach(e=>{
如果(如年龄>=20){
年轻的和相等的推(e)
}
}); 
log({“20和更小”:更年轻的和相等的)
//例2
让人们2=[{姓名:“安娜”,年龄:31},{姓名:“约翰”,年龄:32},{姓名:“汉克”,年龄:60}]
让数据={
"31-40" : [],
“51岁及以上”:[]
}
人2.forEach(e=>{
如果(e.age>30和e.age 50){
数据[“51及以上”]。推送(e)
}
});
console.log(数据)
let result={}
功能组成人旅行者(人){
//表示20岁或以下人群的对象数组

const ageGroup=people.filter(person=>person.age你自己尝试过什么吗?为什么不奏效?欢迎这么做!请以a的形式展示一次尝试。此外,要求对我来说有点不清楚。为什么第一个案例中的截止值是20(John是20岁,但出乎意料地没有包括在“20岁及以下”中…)但是在第二种情况下是31-40和51?谢谢你的澄清。在这种情况下可能非常有用。试着将其与。