将对象与其在数组中的对应值进行匹配

时间:2018-03-06 21:21:31

标签: javascript arrays object for-loop

这是问题......

  

创建一个名为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
}

1 个答案:

答案 0 :(得分:3)

由于这个问题非常简单,您可能不需要独立的功能 使用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 => people[name]);names.map(name => { return (people[name]); });的简写 由于该名称是人物对象的关键,因此people.Danpeople['Dan']将返回相同的结果。