通过数组值返回对象

时间:2016-05-15 09:14:36

标签: javascript arrays

我有一个对象,想要根据数组找到并返回对象值。

var profile = {
   'firstName' : 'John',
   'lastName' : 'Doe',
   'mood' : 'happy'
};

var updated= ['firstName','mood'];

当更改相关字段时,更新的数组会随键更改。

感谢。

2 个答案:

答案 0 :(得分:3)

  

我有一个对象,想要根据数组找到并返回对象值。

你不需要使用underscore.js。只需迭代数组并从对象中提取必要的属性,就可以使用普通的js执行此操作:

var profile = {
  'firstName': 'John',
  'lastName': 'Doe',
  'mood': 'happy'
};

var updated = ['firstName', 'mood'];

updated.forEach(function(prop) {
  console.log(profile[prop]);
});

  

当更改相关字段时,更新的数组会随键更改。

我不确定我是否完全理解您,但似乎您需要profile对象属性的值数组,其名称包含在updated数组中。使用Array.prototype.map可以解决问题:

var profile = {
  'firstName': 'John',
  'lastName': 'Doe',
  'mood': 'happy'
};

var updated = ['firstName', 'mood'];

var values = updated.map(function(prop) {
  return profile[prop];
});

console.log(values);

答案 1 :(得分:2)

看到你要求一个下划线解决方案,这里有一个:

Pick只返回一个只包含你想要的键的对象:

var result = _.pick(profile, updated);

结果如下:

{
   'firstName' : 'John',
   'mood' : 'happy'
}

如果您只需要数组中的值,请使用values函数:

var values = _.values(result);