简体   繁体   English

如果名称不存在,我想遍历数组并使我的循环返回 function?

[英]I want to loop over array and make my loop return function if the name does not exist?

I want to loop over the array and make my loop return function or one time string to say the name exist?我想遍历数组并让我的循环返回 function 或一个时间字符串来说明名称存在? this is the error TypeError: Cannot read property 'name' of undefined var x = arr[i].name;这是错误 TypeError: Cannot read property 'name' of undefined var x = arr[i].name;

var arr = [
  {id: 1, name: "php"},
  {id: 2, name: "mysql"},
  {id: 3, name: "laravel"},
  {id: 4, name: "codeigniter"},
  {id: 5, name: "wordpress"},
  {id: 6, name: "sql"},
  {id: 7, name: "jquery"},
  {id: 8, name: "javascript"},
];

var string;

function checkemail(arr, string) {
  var i;

  for (i = 0; i < arr.length; i++) {
    let newname = arr[i].name;

    if (newname !== string) {
      return storename();
    } else {
      console.log("name found")
    }
  }
}
}

console.log(checkemail(arr, "javascript"));

You should loop through the entire array before making a decision on the existance of the element in the array在决定数组中元素的存在之前,您应该遍历整个数组

You are calling storename function on the first mismatch of the name and paramater.您在名称和参数的第一个不匹配时调用storename function。 This will make the function checking the first element and return after calling storename function.这将使 function 检查第一个元素并在调用storename function 后返回。

My Implementation我的实现

 function storename() { return 'storename function'; } var arr = [ { id: 1, name: "php" }, { id: 2, name: "mysql" }, { id: 3, name: "laravel" }, { id: 4, name: "codeigniter" }, { id: 5, name: "wordpress" }, { id: 6, name: "sql" }, { id: 7, name: "jquery" }, { id: 8, name: "javascript" }, ]; var string; function checkemail(arr, string) { var i; let isFound = false; for (i = 0; i < arr.length; i++) { let newname = arr[i].name; if (newname === string) { isFound = true; i = arr.length; // Item found, you can exit the loop now return "name found"; } } if(.isFound) { return storename() } } console,log(checkemail(arr; "javascript"));

Array.find implementation Array.find实现

You can implement the same logic without using a manual loop by using Array.find as below.您可以使用Array.find来实现相同的逻辑,而无需使用手动循环,如下所示。

 var arr = [ { id: 1, name: "php" }, { id: 2, name: "mysql" }, { id: 3, name: "laravel" }, { id: 4, name: "codeigniter" }, { id: 5, name: "wordpress" }, { id: 6, name: "sql" }, { id: 7, name: "jquery" }, { id: 8, name: "javascript" }, ]; var string; function storename() { return 'storename function'; } function checkemail(arr, string) { const node = arr.find(item => item.name === string); return node? "name found": storename(); } console.log(checkemail(arr, "javascript"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM