javascript - 匹配数组中的值并从函数返回另一个数组

标签 javascript

我的任务是创建基于对象的用户数组。然后创建一个函数,它接受一个参数并返回与第一个 arr 中比较的值匹配的另一个数组

var users = [
  {
    firstname : "jetlag",
    lastname: "son"
  },
  {
    firstname : "becky",
    lastname: "love"
  },
  { 
    firstname : "just",
    lastname: "me"
  }
];

function matchName(name) {
  for (var i = 0; i < users.length; i++) {
      if(users[i].firstname == name) {
          return users[i];
      } else {
          console.log('user does not exist')
      }
  }
}

console.log(matchName("jetlag"));

我能够匹配特定的用户名,但是如果我只是在 matchName("j") 中输入 j,我想返回两个对象。

对此的任何帮助都会很棒。 http://jsfiddle.net/dv9aq0m7/

谢谢。

最佳答案

您当前的代码返回第一个完整的匹配项。这段代码:

  if(users[i].firstname == name) {
      return users[i];
  }

检查两个字符串是否相等,然后return语句将只返回匹配的值。一旦返回任何值,该函数也会停止。

因此您需要进行两个小更改。首先,您需要跟踪符合条件的所有用户,并且您应该使用不同的逻辑来检查string starts with another string .

修改后的代码可能如下所示:

function matchName(name) {
  var validUsers = [];                        //the array of users that pass the logic
  for (var i = 0; i < users.length; i++) {  
      if(users[i].firstname.lastIndexOf(name) === 0) { //this is "starts with" logic
           validUsers.push(users[i]);         //add the element if it's valid
      } 
  }
  //I moved the logic for no matching users the outside the loop
  if (validUsers.length === 0) 
      console.log('No matching users found')
  return validUsers;
}

注意:根据您要打印的文本,我通过检查 validUsers 数组中的元素数量,移动了在循环之外未找到用户的打印逻辑。仅当没有匹配的用户时才会打印一次。

这是一个fork to your fiddle

关于javascript - 匹配数组中的值并从函数返回另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975926/

相关文章:

javascript - jQuery 在 HTML 文档加载后自动执行一个事件;

javascript - 如何在 chrome 中使用 jquery.load() 在 html 中嵌入文件

javascript - JS : Running methods from the constructor and not using object again

javascript - 在 CSS 中重叠相对定位的图像

javascript - 我是否总是必须为每张表制作一个 Sequelize 模型文件?

javascript - 我无法通过添加按钮添加多个文本并显示一些额外的 CSS

javascript - 在一个页面中可以同时设置多少个 javascript setTimeout/setInterval 调用?

javascript - 使用 phantomjs 获取非常高质量的屏幕截图

javascript - 在 IE 和 FF 中使用 js 禁用输入提交按钮不起作用

php - 表单提交遗漏了一个值