Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Search_Javascript Objects - Fatal编程技术网

Javascript 在对象数组中搜索匹配变量的条目,并检查它是否匹配其他字段

Javascript 在对象数组中搜索匹配变量的条目,并检查它是否匹配其他字段,javascript,arrays,search,javascript-objects,Javascript,Arrays,Search,Javascript Objects,因此,该计划试图分配一个教室。到目前为止,该程序已经向用户询问了班级代码、学生人数以及是否需要计算机,并且已经用字段“cRObj.name”、“cRObj.students”和“cRObj.computers”构建了一个数组(因此将在cRObj.name下列出教室名称,在cRObj.students下列出学生人数,以及是否有计算机(y/n)在cRObj.计算机中) 我必须搜索对象数组,试图找到一个与用户输入的学生人数匹配的条目(我想我知道怎么做) 但是,之后它需要检查cRObj.computer

因此,该计划试图分配一个教室。到目前为止,该程序已经向用户询问了班级代码、学生人数以及是否需要计算机,并且已经用字段“cRObj.name”、“cRObj.students”和“cRObj.computers”构建了一个数组(因此将在cRObj.name下列出教室名称,在cRObj.students下列出学生人数,以及是否有计算机(y/n)在cRObj.计算机中)

我必须搜索对象数组,试图找到一个与用户输入的学生人数匹配的条目(我想我知道怎么做)

但是,之后它需要检查cRObj.computers是否等于用户的输入,然后如果前两个匹配,则将条目保存在cRObj.name下,我不确定该如何操作。

您可以使用,这将接受一个传递给数组中每个项的函数,并返回true或false,并返回一个新数组,该数组仅包含传递给筛选器的nction将返回true

您可以部分应用curried函数。curried函数示例:

const plus = a => b => a+b;
const plusTen = plus(10);//is a function that takes number b and adds 10 (a is 10)
const eleven = plusTen(1); takes 1 for value of b and 10 for value of a
以下是如何使用curried函数进行比较:

const equal = search => value =>
  search === value;
const isFive = equal(5);
//... this will return false, search is 5 and value is 10
//  5===10 is false
if(isFive(10)){
提供将从对象获取属性的函数:

const getA = o => (o&&o.a);
getA({a:10};//will return 10
getA({hasNoA:10};//will return undefined
组合所有以创建筛选函数:

const plus = a => b => a+b;
const plusTen = plus(10);//is a function that takes number b and adds 10 (a is 10)
const eleven = plusTen(1); takes 1 for value of b and 10 for value of a
const数据=[
{a:3,b:2},
{a:4,b:6},
{a:5,b:8},
{a:6,b:9},
{a:7,b:3}
];
//filer函数需要一个getter(比如getA)
//比较器,是一个部分应用的函数,它获取一个值并对其进行比较
//使用o.something(如果getter是getA,它将与o.a进行比较)
//o是需要过滤的对象(如数据元素:data[0]={a:3,b:2})
常量过滤器fn=getter=>comparer=>o=>
比较器(getter(o));
//获得财产
常量getA=o=>(o&&o.a);
//我相信你可以写getB
//比较搜索===值
常量相等=搜索=>value=>
搜索===值;
//比较搜索值=>
搜索=5
console.log(
“a等于或大于5”,
数据过滤器(
filterFn(getA)(biggerEqual(5))//在搜索为5的情况下部分应用biggerEqual
)
);
//如果你想把b和你能做的事情进行比较
//常量getB=o=>(o&&o.b);
//资料
//.filter(filterFn(getA)(biggerEqual(5))//一个更大或相等的5
//.filter(filterFn(getB)(你能猜出来吗?//b等于5
//下面是一个以数据数组和筛选函数数组为例的示例
//它将对每个函数的数据数组应用过滤器
常量过滤器数据=(数组、过滤器函数)=>
过滤函数(
(结果,过滤函数)=>result.filter(过滤函数),
排列
);
//使用filterData
console.log(
“使用filterData”,
过滤器数据(数据、[
filterFn(getA)(biggerEqual(5))//在搜索为5的情况下部分应用biggerEqual
//,您可以在此处添加更多筛选器
])

)
请举例说明输入和所需输出的实际结构。