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

香草JavaScript-在满足多个条件时尝试更新数组元素

香草JavaScript-在满足多个条件时尝试更新数组元素,javascript,arrays,Javascript,Arrays,我试图创建一个接受数组的函数,每当其中一个值等于“food”时,就会打印“yummy”。第二个要求是更新(替换)整个数组,如果没有数组元素是“食物”,则打印一次“我饿了” 第二种情况是我遇到困难,不确定如何继续 我包括了两个测试用例,第二个我试图触发第二组条件 function alwaysHungry(array){ // iterate through the array values using a for() loop for(var i = 0; i < array.le

我试图创建一个接受数组的函数,每当其中一个值等于“food”时,就会打印“yummy”。第二个要求是更新(替换)整个数组,如果没有数组元素是“食物”,则打印一次“我饿了”

第二种情况是我遇到困难,不确定如何继续

我包括了两个测试用例,第二个我试图触发第二组条件

function alwaysHungry(array){
  // iterate through the array values using a for() loop
  for(var i = 0; i < array.length; i++){
    // for each element equal to "food", change to yummy
    if (array[i] === 'food'){
      array[i] = 'yummy';
    }
    // if no array elements are "food", print "I'm hungry" only once
     else if(array[i] !== 'food'){ // this is checking any array index, not simply the first
      array[i] = "I\'m hungry";
    }
    // return array;  // returning the array here will short circuit the for loop
  }
  return array;
}
// Test cases
console.log(alwaysHungry(['food','drink','soda','food','drink']));  
// Expected result => ["yummy", "drink", "soda", "yummy", "drink"]

console.log(alwaysHungry(['rocks','air','water']));  
// Expected result => ["I'm hungry"]
function alwaysHungry(数组){
//使用for()循环遍历数组值
对于(var i=0;i[“美味”、“饮料”、“苏打水”、“美味”、“饮料”]
console.log(总是用石头、空气和水);
//预期结果=>[“我饿了”]
作为旁注,上面的问题是我在训练营项目中遇到的一个问题的变体,我试图理解/解决这个问题,而不是严重依赖内置方法

我真正想从中了解的是,当值“food”不存在时,如何在第二个测试用例中归零,并相应地进行更新。我已经理解,我上面的(else-if)逻辑将更新任何不等于“food”的数组元素,而不是只更新完全不存在“food”的数组(测试用例)


这是一个供参考和提前感谢的变量。

您可以使用一个标志
饥饿
,并使用
false
初始化此变量。然后检查数组的值,必要时进行更新,并将标志设置为
true

在返回的最后,根据
饥饿
返回带有
[“我饥饿”]
的数组或更新的数组

function alwaysHungry(数组){
var=true;
//使用for()循环遍历数组值
对于(var i=0;i[“美味”,“饮料”,“苏打”,“美味”,“饮料”]
console.log(总是用石头、空气和水);

//预期结果=>[“我饿了”]
挑战是否要求您返回传入的数组?或者您可以创建一个新数组并返回它吗?我认为创建一个空的占位符数组,例如
var newArray=[],完全可以接受。我以前也做过很多次类似的面向阵列的挑战。然后使用
newArray.push(array[i])
推入数组值。最后,我没有继续使用这个选项。一位同学早些时候向我建议了一个布尔值,现在我更清楚地看到了如何应用它。谢谢你,尼娜。