Javascript 将给定属性的值从对象中拾取到数组中

Javascript 将给定属性的值从对象中拾取到数组中,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我有一个目标: person = { birth_year: 1970, first_name: "John", last_name: "Doe", occupation: "Doctor", city: "Boston", married: true } 我有一个按给定顺序排列的键名数组: keys = ["occupation", "last_name", "city"] 我想得到这个数组: ["Doctor", "Doe",

我有一个目标:

person = { 
    birth_year: 1970, 
    first_name: "John", 
    last_name: "Doe", 
    occupation: "Doctor", 
    city: "Boston",
    married: true 
}
我有一个按给定顺序排列的键名数组:

keys = ["occupation", "last_name", "city"]
我想得到这个数组:

["Doctor", "Doe", "Boston"]
重要的是,答案应该保证顺序(JavaScript不保证对象迭代的顺序)

我认为lodash/下划线中可能有一些实用函数可以简单地执行此操作,但无法找到任何实用函数。

您可以使用它。映射通过数组循环,并通过对每个项应用函数来创建新数组。当您使用
数组作为起点,并在
o
中返回该键的值时,您将得到一个仅包含值的新数组

使用“动态”键名时,使用
对象[stringKeyName]
符号来检索值

var o={
出生年份:1970年,
名字:“约翰”,
姓氏:“Doe”,
职业:“医生”,
城市:“波士顿”,
已婚:是的
};
var key=[“职业”、“姓氏”、“城市”];
var result=keys.map(函数(k){returno[k];});
控制台日志(结果)可用于此操作。映射通过数组循环,并通过对每个项应用函数来创建新数组。当您使用
数组作为起点,并在
o
中返回该键的值时,您将得到一个仅包含值的新数组

使用“动态”键名时,使用
对象[stringKeyName]
符号来检索值

var o={
出生年份:1970年,
名字:“约翰”,
姓氏:“Doe”,
职业:“医生”,
城市:“波士顿”,
已婚:是的
};
var key=[“职业”、“姓氏”、“城市”];
var result=keys.map(函数(k){returno[k];});

控制台日志(结果)使用
Lodash
可以使用
拾取

var o={
出生年份:1970年,
名字:“约翰”,
姓氏:“Doe”,
职业:“医生”,
城市:“波士顿”,
已婚:是的
}
var key=[“职业”、“姓氏”、“城市”];
var结果=0.values(0.pick(o,keys));
console.log(结果)

使用
Lodash
可以使用
拾取

var o={
出生年份:1970年,
名字:“约翰”,
姓氏:“Doe”,
职业:“医生”,
城市:“波士顿”,
已婚:是的
}
var key=[“职业”、“姓氏”、“城市”];
var结果=0.values(0.pick(o,keys));
console.log(结果)

我们甚至可以将其简化为
var result=keys.map(k=>o[k])
,但我仍然不喜欢它。如果这是一个风格问题,您可以在助手中包装一些东西。请看第二个代码段。如果顺序很重要,那么这个函数或
.map
函数就是最好的选择。我们甚至可以将其简化为
var result=keys.map(k=>o[k])
,但我仍然不喜欢它。如果是样式问题,您可以将一些内容包装在助手中。请看第二段。如果顺序很重要,那么这个或.map
函数就是最好的选择。它能保证顺序吗?@Mikhail Batcher我不确定。@NenadVracar这就是我问这个“nooby”问题的原因…:)<代码>拾取
创建一个对象,
通过对象的关键点循环。对象键不按spec()排序,因此在本例中,您不能期望
result
遵循
键的顺序。它能保证顺序吗?@Mikhail Batcer我不确定。@NenadVracar这就是我问这个“nooby”问题的原因…:)<代码>拾取
创建一个对象,
通过对象的关键点循环。对象键不按spec()排序,因此在本例中,您不能期望
result
遵循
键的顺序。