Javascript 如何从对象检索指定的属性
假设我们有一个Person对象:Javascript 如何从对象检索指定的属性,javascript,Javascript,假设我们有一个Person对象: let person = { name: "Tom", age: "18", postcode: 1234, city: "Sydney" } 现在,我想检索name和age属性,并将它们指定给名为student的新对象: 我完全可以手动创建student对象,如下所示: let student= { name: person.name, age: person.age } 但问题是我必须提前知道属性名称,比如名称和年龄,
let person = {
name: "Tom",
age: "18",
postcode: 1234,
city: "Sydney"
}
现在,我想检索name和age属性,并将它们指定给名为student的新对象:
我完全可以手动创建student对象,如下所示:
let student= {
name: person.name,
age: person.age
}
但问题是我必须提前知道属性名称,比如名称和年龄,所以在我键入属性名称时,像VisualStudio这样的IDE代码中没有intellisense支持
或
我可以将rest运算符用作:
let { postcode, city, ...student} = person;
但是这种方法不是很简单,因为我仍然需要知道一个对象中有多少属性,对于我的例子来说,student对象是一个非常简单的对象,但是如果一个对象中有十几个属性,而我只想检索其中的一个或两个,那么它很容易出错。
我怎样才能以最简洁有效的方式做到这一点
编辑:
实际上,我的意思是,如果有一个简单而高级的功能,我可以在一句话中完成工作,如下所示:
let student = { person.name, person.age }; // not valid syntax, I know
or
let student = { get person.name, get person.age }; // non existent syntax, but you get the idea
所以我可以依靠智能感知来定义一切。
似乎我需要编写至少两个单独的语句来实现这个目标,这对我来说不太合适,我是JS新手,我可以看到这个功能可能非常有用,为什么不在一个语句中实现呢?创建一个函数,将要提取的对象和属性数组作为参数。然后创建一个空对象,将给定的属性添加到该对象并返回它 const getProps=obj,props=> props.reduceac,a=>{ ac[a]=obj[a]; 返回ac; },{}; 让人={ 姓名:汤姆, 年龄:18岁, 邮政编码:1234,, 城市:悉尼 }
console.loggetPropsperson,['name','age']我认为这可能会有所帮助。可能不是完整的答案,老实说,我不完全理解你的要求 您可以使用如下字符串访问对象
myObject[string]
例如
Let myFields = ["name", "age", "postcode"];
let myObject = {};
myFields.forEach(f => myObject[f] = "");
console.log(myObject);
// { name: "", age: "", postcode: "" }
例2
let myObject = {};
myObject["name"] = "Daniel";
myObject["age"] = 32;
myObject["postcode"] = "78UH4";
console.log(myObject);
// { name: "", age: "", postcode: "" }
myObject.city = "Thurles";
console.log(myObject["city"])
// Thurles
这如何有助于斗争
Daniel您可以定义一个类,例如
class Student {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let student = new Student(person.name, person.age);
你也可以考虑让人成为一个类,然后让学生成为它的一个子类,那么你就不需要两个不同的对象了。
你能解释一下你想要使用哪些属性来复制你想要的属性吗?这个问题还不清楚:现在我想检索名字和年龄属性。所以你知道你想要的属性,对吗?有帮助吗?你总是需要知道你想要在新对象中的哪些属性,以便创建对象和分配可能重复的值class Student {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let student = new Student(person.name, person.age);