Javascript 如何从对象检索指定的属性

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 } 但问题是我必须提前知道属性名称,比如名称和年龄,

假设我们有一个Person对象:

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);