首先,很抱歉,这可能是某个地方的另一个问题的重复,但是我不知道我的措词在我的搜索中是否有误,但我无法找到解决该问题的确切方法'拥有,所以如果这是重复的话,我会提前致歉。
现在是问题。
我有一个对象数组,具有各种属性。 然后,我还有另一个字符串数组,其中每个字符串代表对象数组中对象的属性名称。
我想创建一个新的对象数组,但是该数组中的对象仅具有带有字符串数组名称的属性。
我已经花了几个小时弄弄这个,但是还没有真正按预期工作。我已经尝试过做一些Object.keys东西,同时结合了map和indexOf,但是我觉得我的逻辑中缺少了一些东西,在这一点上我还不确定。
所以基本上我有一个对象数组:
data = [
{
id: 1,
name: 'john',
value: 5
},
{
id: 2,
name: 'ben',
value: 10
},
{
id: 3,
name: 'lisa',
value: 12
},
];
和一个字符串数组:
desiredKeys = ['id', 'name'];
我想创建一个新的对象数组,其中每个对象仅具有'id'和'name'属性。
这是个笨蛋
https://next.plnkr.co/edit/nU4Y85j7NFuFQqAx?open=lib%2Fapp.ts
我的目标是创建一个新的对象数组,但其中的对象仅具有'desiredKeys'数组中的属性,即:
[
{
id: 1,
name: 'john'
},
{
id: 2,
name: 'ben'
},
{
id: 3,
name: 'lisa'
},
];
欢迎任何提示,谢谢!!
答案 0 :(得分:3)
您可以embedConfiguration
数据数组并像这样使用Object.fromEntries()
:
var embedConfiguration = {
type: 'report',
id: json.ReportId,
embedUrl: json.EmbedUrl,
tokenType: models.TokenType.Embed,
accessToken: json.EmbedToken,
filters: [basicFilter]
};
如果不支持map
,则可以reduce
键来获取每个对象的子集:
const data=[{id:1,name:"john",value:5},{id:2,name:"ben",value:10},{id:3,name:"lisa",value:12},],
desiredKeys = ['id', 'name'];
const output = data.map(o =>
Object.fromEntries( desiredKeys.map(k => [k, o[k]]))
)
console.log(output)
答案 1 :(得分:0)
代码更少的简单方式
使用Vanilla JavaScript,您可以像这样使用const data=[{id:1,name:"john",value:5},{id:2,name:"ben",value:10},{id:3,name:"lisa",value:12},],
desiredKeys = ['id', 'name'];
const output = data.map(o =>
desiredKeys.reduce((a, k) => ({ ...a, [k]: o[k] }), {})
)
console.log(output)
运算符:
import pymysql
con = pymysql.connect("Host", "Username", "Password", "Database")
cur = con.cursor()
#taken from sample displayed
user_name = input("What is your name?:\n")
user_phone = int(input("What is your phone number:\n"))
user_city = input("Your city:\n")
cur.execute("insert into information(name,phone, city) values('{}', {},
'{}')".format(user_name, user_phone, user_city))
con.commit()
con.close()
答案 2 :(得分:0)
您可以使用Language Support for Java(TM)
和map
。在forEach
内部进行回调,以迭代map
并从相应的对象获取键和值
desiredKey
答案 3 :(得分:0)
首先复制数据数组。使用它只会从每个元素中删除value属性。
data.forEach((i)=> delete i.value )