2017-05-02 39 views
-2
const json = { 
    a: 1, 
    b: 2, 
    c: "HI" 
} 

有没有办法让{a : 1}正常工作?用于创建具有相同字段的对象的简写

var someReturn = aOnly({a : json.a}); 

我不确定ES6的解构/构造解决了这个问题。在阅读了几个ES6解构示例后,我似乎无法找到正确的语法。

编辑 没有什么错误的代码,我只是询问是否有语法只提取“一”只从JSON没有冗余做

{a : json.a }

aOnly功能的实现不是这里的重点

+0

在你的榜样,你有什么想someReturn等于/你想什么aOnly返回? –

+0

我的意思是......你已经给出了一个选项。它出什么问题了?它很容易阅读,清洁等。 –

+0

@KevinB没有什么是错的:)只是好奇的是有ES6语法来缩短提取'{a:json.a}' – Zanko

回答

0

谢谢你,我已经找到了正确的语法。我在做的最初的错误是试图直接使用{ json.a }构建,希望这会自动变成{ a : json.a},但正确的方法是首先破坏并稍后构建。

var json = { 
 
    a : "ASDF", 
 
    b : 123, 
 
    c : "Test" 
 
}; 
 
    
 
const {a, b, c} = json; // destructing 
 

 
var aObject = aOnly({a}); // constructing 
 
var bObject = bOnly({b}); 
 
var cObject = cOnly({c}); 
 

 
console.log (aObject); 
 
console.log (bObject); 
 
console.log (cObject); 
 

 
function aOnly(a) { return a; } 
 
function bOnly(b) { return b; } 
 
function cOnly(c) { return c; }

2

您可以使用ES6对象解构对作为参数传递的对象来选择特定的属性。

const json = { 
 
    a: 1, 
 
    b: 2, 
 
    c: "HI" 
 
} 
 

 
function aOnly({a}) { 
 
    return a; 
 
} 
 

 
var someReturn = aOnly(json); 
 
console.log(someReturn)

+0

是的,这是我想问的:P但不是修改函数aOnly(a){'to'function aOnly({a}){'有没有办法只从函数调用中“构造”a ? 例如'var someReturn = aOnly({json.a})' 或类似的东西? – Zanko

相关问题