在JavaScriptES6中,如何从散列中获取一些属性?

在JavaScriptES6中,如何从散列中获取一些属性?,javascript,properties,ecmascript-6,clone,destructuring,Javascript,Properties,Ecmascript 6,Clone,Destructuring,我有一个具有某些属性的对象。我想提取一些众所周知的属性,跳过任何不存在的属性 大概是这样的: let x = {a: 1, b: 2, c: 3}; let y = take a, b, d from x; // Not real JS! {a: 1, b: 2} // Note that d is missing! y现在看起来像这样: let x = {a: 1, b: 2, c: 3}; let y = take a, b, d from x; // Not real JS! {a:

我有一个具有某些属性的对象。我想提取一些众所周知的属性,跳过任何不存在的属性

大概是这样的:

let x = {a: 1, b: 2, c: 3};
let y = take a, b, d from x; // Not real JS!
{a: 1, b: 2} // Note that d is missing!
y现在看起来像这样:

let x = {a: 1, b: 2, c: 3};
let y = take a, b, d from x; // Not real JS!
{a: 1, b: 2} // Note that d is missing!
是否有运算符或方法可以执行此操作

尝试以下操作-

out = {a: in.a, b:in.b, d:in.d};
out = JSON.parse(JSON.stringify(out));
尝试下列方法:

out = {a: in.a, b:in.b, d:in.d};
out = JSON.parse(JSON.stringify(out));

另一种方法是分解结构:

let {a, b, d} = x;
let y = {a, b, d};
这会自动取出要使用的属性。 然后,您可以将它们与对象文字放回一起,在ES6中,对象文字不需要执行{a:a,b:b}。如果名称相同,您可以只写{a,b}


在这种情况下,a、b和d也会被复制。

另一种方法是通过解构:

let {a, b, d} = x;
let y = {a, b, d};
var copied = {};
var propertiesToCopy = ['a', 'b'];
for (var key in originalObject) {
  if (originalObject.hasOwnProperty(key) && propertiesToCopy.indexOf(key) != -1) {
    copied[key] = originalObject[key];
  }
}
这会自动取出要使用的属性。 然后,您可以将它们与对象文字放回一起,在ES6中,对象文字不需要执行{a:a,b:b}。如果名称相同,您可以只写{a,b}


在这种情况下,a、b和d也会被复制。

您可以在.c中执行删除操作。但不确定这是否是您想要的,因为它也会从中删除它。您也可以克隆并删除c。请不要将中用作变量名,因为它是一个运算符。删除c不起作用,因为可能有属性d、e、f…我已更新示例以使用x和y。您可以在.c中删除。但不确定这是否是您想要的,因为它也会从中删除它。您也可以克隆并删除c。请不要将中用作变量名,因为它是一个运算符。删除c不起作用,因为可能存在属性d、e、,f…我已经更新了示例,使用了x和y。它还用不必要的变量污染了您的作用域:PAnd它还用不必要的变量污染了您的作用域:pout=JSON.parseJSON.stringifyout?它可以删除任何未定义的属性。我明白了。。。这可能值得指出,以及这种方法的缺点?它可以删除任何未定义的属性。我明白了。。。这可能值得指出,同时也指出了这种方法的缺点。
var copied = {};
var propertiesToCopy = ['a', 'b'];
for (var key in originalObject) {
  if (originalObject.hasOwnProperty(key) && propertiesToCopy.indexOf(key) != -1) {
    copied[key] = originalObject[key];
  }
}