首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问数组中的数据

访问数组中的数据
EN

Stack Overflow用户
提问于 2017-03-07 06:24:07
回答 3查看 76关注 0票数 0

我一直在看这个,阅读了一段时间,但似乎无法理解。我确信这是简单的,但我不知道为什么我可以访问收集的数据。我得到了一个错误

测试未定义

如果我在for循环之外移动,我可以很好地访问它。我显然错过了一些简单的东西。任何帮助都会很好。

代码语言:javascript
运行
复制
function whatIsInAName(collection, source) {
  // What's in a name?
  var arr = [];
  // Only change ode below this line
  var test = Object.values(source);

  for(var i = 0; i < collection.length; i++) {
    if (collection[i].test === source[0].test){
      arr[i] = collection[i];
    }
  }

  // Only change code above this line
  //arr = collection[0].last;
  return arr; 
}

whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", 
last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-07 06:34:08

在您的代码Object.values中,返回源的值为"Capulet",而在for循环中,您将源等效为数组(源是对象),这就是为什么测试是未定义的。

代码语言:javascript
运行
复制
function whatIsInAName(collection, source) {
  // What's in a name?
  var arr = [];
  // Only change ode below this line
  
  
  var test = Object.keys(source);//changes values to keys
  console.log(test);
  for(var i = 0; i < collection.length; i++) {
    if (collection[i][test] === source[test]){ //change how you are accessing test
      arr.push(collection[i]);
    }
  }

  // Only change code above this line
  //arr = collection[0].last;
  console.log(arr);
  return arr; 
}

whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", 
last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });

票数 1
EN

Stack Overflow用户

发布于 2017-03-07 06:35:23

要传入的对象没有名为test的密钥。如果您试图使用您在这里创建的变量var test = Object.values(source);,这将无法工作,因为test无论如何都是一个数组。

你可以尝试这样的方法:

代码语言:javascript
运行
复制
if (collection[i][test] === source[0][test])

但我认为这也行不通,因为根据test的文档,Object.values()的值应该是Capulet

票数 0
EN

Stack Overflow用户

发布于 2017-03-07 06:40:43

尝尝这个。

代码语言:javascript
运行
复制
function whatIsInAName(collection, source) {
  var arr = [];
  var keys = Object.keys(source);

  for(var i = 0; i < collection.length; i++) {
      var item = collection[i];
      var all = true;
      for(var k = 0; k < keys.length; k++){
          var key = keys[k];
          if(item[key] != source[key]){
            all = false;
            break;
          }
      }
      if(all){
          arr.push(item)
      }
  }

  return arr; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42641574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档