Java中布尔和数组的困难

时间:2018-11-06 02:59:30

标签: javascript arrays boolean

在这里,我试图编写一个将整数列表作为参数并搜索值7的代码。如果列表中有7,则该函数将返回一个布尔值,表示true,否则返回false。到目前为止,这是我尝试过的:

enter image description here

与我的else语句有关吗?我结束得太早了吗?还是不够快?

5 个答案:

答案 0 :(得分:3)

JavaScript已经具有执行此操作的功能。 Array.prototype.includes()。您可以这样使用它:

const containsSeven = list.includes(7)

如果您要查找更复杂的内容,例如某项是否为对象并且是否包含特定的键值对,则可以使用Array.prototype.some()

答案 1 :(得分:3)

您可以简单地使用数组,并按照ECMA2016使用包含,如下所示:

if([2,5,7].includes(value)) {
    return true;
}
return false;

或带有列表

var flag = false;

for(var i=0; i<arguments.length; i++)
{   if(arguments[i] == this) { flag = true; break; }}

return flag;

答案 2 :(得分:2)

您可以将Array.prototype.find()的结果强制转换为boolean,该结果将返回array中满足所提供测试功能的第一个元素的值。否则,返回undefined

代码:

const list1 = [4, 5, 6, 7, 8];
const list2 = [1, 2, 3, 4, 5];
const findTheNumber = (arr, num) => !!arr.find(n => n === num);

console.log(findTheNumber(list1, 7));
console.log(findTheNumber(list2, 7));

答案 3 :(得分:2)

您对if语句的声明是错误的。 else标签在错误的行上。如果您使用else,则应该在if块之后。

但是将else块向上移动并不能解决您的功能,因为如果数组中的第一个元素是 7 ,它将仅返回true

有很多不错的方法,例如使用高阶函数,但是看来您是该语言的新手。

编辑:因此,我建议使用以下两种简单方法之一:

1)您可以在for循环中存储在数组中找到的 7s 的数量。然后,如果 7s 的数目为0 ,则返回false;如果 7s 的数目大于0 <,则返回true / p>

2)另一种更快的方法是,在遇到{em> 7 之后且在true循环之后,在for循环中返回forreturn false。因为return语句退出了作用域-这是您的函数-不仅for循环将结束,而且您的函数将更早返回true

对于第二个选项,您的函数应如下所示:

function find_value(list) {
  for (let i = 0; i < list.length; i++) {
    if(list[i] == 7) {
      return true
    }
  }
  return false
}

答案 4 :(得分:0)

尝试这种方式

function search(list , value){      // Value = 7; 
    return true ? list.indexOf(value) > -1 : false
}

Proof