【问题标题】:matching an object with its corresponding value in an array将对象与其对应的值在数组中匹配
【发布时间】:2018-03-06 21:21:30
【问题描述】:

问题来了……

创建一个名为 keyAccessor 的函数。 keyAccessor 应该包含两个 参数:人员数组和对象。每个人的名字都是 也是对象的属性。 keyAccessor 应该循环通过 名称数组,并访问每个名称的对应值 对象,将值推入一个空数组。 keyAccessor 应该 返回新数组。

可以传入的示例名称集

var names = ["Dan", "Todd", "Andrew", "Doug"]

可以传入的示例对象

var people = {
  Dan: { city: "Las Vegas", age: 24 },
  Todd: { city: "France", age: 28 },
  Andrew: { city: "Portland", age: 12 },
  Doug: { city: "New New York", age: 56 },
}

将返回的新数组示例

var sampleOutput = [
  { city: "Las Vegas", age: 24 },
  { city: "France", age: 28 },
  { city: "Portland", age: 12 },
  { city: "New New York", age: 56 }
]

这就是我已经走了多远。

function keyAccessor(arr, obj){
  var newArr = []
  console.log(obj)
  console.log(arr)
  for(let i=0;i<arr.length;i++){
    if(arr[i]=obj.name){
      return newArr.push(obj)
    }
  }

  return newArr
}

【问题讨论】:

  • JS 中的等式检查使用== 进行松散比较,=== 进行严格比较。普通= 是一个作业。我说的是if,而不是你的循环。不过,这只是您的问题之一。
  • 这听起来像是一个编码测试...
  • 提示:我认为你只需要从函数中返回一个“返回”
  • 这是一个测试,但我可以使用我想要的任何资源
  • 或许.map函数可以帮到你。

标签: javascript arrays object for-loop


【解决方案1】:

由于这个问题很简单,你可能不需要独立的函数。
使用map 就足够了。

const names = ["Todd", "Dan", "Andrew", "Doug"];
const people = {
  Dan: { city: "Las Vegas", age: 24 },
  Todd: { city: "France", age: 28 },
  Andrew: { city: "Portland", age: 12 },
  Doug: { city: "New New York", age: 56 },
};

function keyAccessor(names, people) {
  return names.map(name => people[name]);
}

console.log(keyAccessor(names, people));

上面的代码相当于:

let result = [];
for(let index in names) {  // in this case, index will be 1, 2, 3, 4
  let name = names[index];
  result.push(people[name]);
}

names.map(name =&gt; people[name]);names.map(name =&gt; { return (people[name]); });的简写
由于名称是 people 对象的键,people.Danpeople['Dan'] 将返回相同的结果。

【讨论】:

  • 这确实有效,我理解.map,但您能否澄清一下,但究竟发生了什么。如果我是正确的,您可以映射名称并设置一个名为 name 的新数组,该数组包含对象 people 中的每个人?
  • 我写了一点点来解释这一点。希望对您有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多