我没有找到任何东西。这是我的测试用例:
InfoDBContext InfoContext = new InfoDBContext();
object o = InfoContext.Visas.ToList().Where(visa => visa.VisaName == "Visa 1").FirstOrDefault().Employees;
return View(o);
这是我到目前为止的代码:
public ActionResult VEmployees()
{
InfoDBContext InfoContext = new InfoDBContext();
//int EmployeeID = InfoContext.Infoes.ToList().Where(emp => emp.ID == 1).FirstOrDefault().ID;
object o = InfoContext.Visas.Include(e => e.Employees).Where(v => v.VisaName=="Hunain").FirstOrDefault().Employees;
return View(o);
}
那是当我尝试搜索偶数时,如果要搜索偶数,则必须返回行号和什么数字,但另一方面,如果不搜索数字且数组的长度不相同,则需要返回什么列和出现多少次。 这种情况无需使用正则表达式,映射,过滤器,索引等内置函数,只需使用循环和诸如推,弹出,移位等数组操作即可
谢谢您的帮助,我只是一个尝试学习代码的菜鸟:)
答案 0 :(得分:1)
这种情况不需要内置功能
通常,当您要将数组变成一个值时,可以使用Array.prototype.reduce
const specificSearch = (array, comparer) =>
array.reduce((highest, items) => {
//reduce to highest number
const current = items.reduce(
//reduce to number
//if comparer returns true for item add 1 to sum
(sum, item) => (comparer(item) ? sum + 1 : sum),
0,//start with sum of 0
);
//if current result is higher than highest so far
// return current, else return highest
return current > highest ? current : highest;
}, 0/** start with highest value of 0 */);
console.log(
"max times even in item array",
specificSearch(
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
(x) => x % 2 === 0,
),
);
console.log(
"max times value of 'x' in item array",
specificSearch(
[
['o', 'o', 'o', 'x'],
['x', 'x', 'o'],
['o', 'x'],
['x', 'x', 'x', 'x', 'x', 'x', 'x'],
],
(x) => x === 'x',
),
);
如果您看到代码片段,那么您会发现可以将数组转换为带有内部约简的数字,而外部约简则选择最高的数字。
内部reduce使用specificSearch
的调用者传递的比较器函数来指示何时需要增加总和,现在,调用者可以确定如何使用specificSearch
。
答案 1 :(得分:1)
您可以移交一个用于检查特定值的函数,然后为检查返回一个布尔值。
even
拿
x => !(x % 2)`
进行身份检查
x => x === 'x'
然后,您可以收集行和列数组中的所有计数,以后再获取最大值,然后从rows
/ cols
数组中返回具有最大值的索引。
结果是一个对象的行/列的最大计数和发生最大计数的索引。
顺便说一句,这个答案使用索引,因为它们在Javascript中起作用,从零开始。如果您需要以1开头,则只需为每个索引添加1。
function specificSearch(array, checkFn) {
function getIndices(array, value) {
var i, indices = [];
for (i = 0; i < array.length; i++) {
if (array[i] === value) indices.push(i);
}
return indices;
}
var i, j,
rows = [],
cols = [],
max;
for (i = 0; i < array.length; i++) {
for (j = 0; j < array[i].length; j++) {
if (checkFn(array[i][j])) {
rows[i] = (rows[i] || 0) + 1;
cols[j] = (cols[j] || 0) + 1;
}
}
}
max = Math.max(...cols, ...rows);
return { max, rows: getIndices(rows, max), cols: getIndices(cols, max) };
}
console.log(specificSearch([[1, 2, 3], [4, 5, 6], [7, 8, 9]], x => !(x % 2)));
console.log(specificSearch([['o', 'o', 'o', 'x'], ['x', 'x', 'o'], ['o', 'x'], ['x', 'x', 'x', 'x', 'x', 'x', 'x']], x => x === 'x'));
.as-console-wrapper { max-height: 100% !important; top: 0; }