2017-01-06 3 views
1

Я хочу знать, если вы можете использовать динамическое выражение, когда разрушающие объект:деструктурирующий объекта, основанные на выражении

Предположим:

//basic de-structure example 
var a = {b: 1}; 
var {b: c} = a; // stores 1 in c 
//what I want to do 
var { (b > 0): isItHigher = false} = a; // want isItHigher to be true 

Это может быть синтаксисом Я не в курсе, но, по существу, я хочу оценить выражение против исходного свойства объекта и сохранить его в новой переменной. Это возможно?

+0

Непонятно, почему именно вам это нужно. Не могли бы вы привести еще один пример? Вам нужно несколько 'isItHigher' для нескольких значений? Возможно, вы можете просто использовать тернарный оператор, хотя не совсем ясно, какие значения должны иметь значения 'isItHigher'. – Xufox

+0

Де-структурирование дает мне краткую возможность инициализировать несколько переменных из объекта. Я часто использую его для чтения переменных из вложенных объектов. Часто вам нужно получить дополнительную информацию от вышеупомянутых переменных. Так я и хотел бы сделать это. – Conqueror

+0

Последняя строка вашего примера эквивалентна 'var isItHigher = a.b> 0'? – Anko

ответ

3

Вы можете сделать это, используя destructuring defaults. Значения по умолчанию может также включать в себя выражение, основанное на значениях вы уже извлеченный:

var a = { b: 1 }; 
 
var { b, isItHigher = b > 0 } = a; 
 

 
console.log(isItHigher);

@Anko notes a caveat: Этот метод также создает переменную b, которая может понапрасну загрязнять пространство имен в зависимости от контекста.

+0

Спасибо. Одно незначительное обновление вашего ответа заключается в том, что ваш комментарий является неточным, но концепция - именно то, что я хотел. – Conqueror

+0

Предостережение. Этот метод также создает переменную 'b', которая может бесполезно загрязнять пространство имен в зависимости от контекста. – Anko

+1

@ Анько - действительно. Я бы не делал этого в глобальном контексте, но внутри функций и модулей это обычно не проблема. Я добавлю это в качестве примечания к моему ответу. –

Смежные вопросы