2016-12-19 5 views
-1
var obje = {hair: "yellow", eyes: "blue"}; 
var format = "hair + ' ' + eyes"; 
console.log(eval(format)); 

Я стараюсь сделать console.log(eval(format)) написать "yellow eyes" на консоль. Как я могу изменить от "hair" до "obje.hair" и от "eyes" до "obje.eyes" в формате string?Как использовать функцию eval с объектом в js?

+0

Эмра, в чем же проблема, которую вы пытаетесь решить здесь? Почему вы должны использовать 'eval'? – Cerbrus

+0

Проблема в том, что если слово любого формата содержит имя столбца obje, это слово может быть изменено как имя столбца obje. Например, в формате волосы должны быть obje.hair. Потому что функция eval принимает obje.hair, а не волосы. – Emrah

+0

Очевидно, что этот код не является репрезентативным для проблемы –

ответ

3

Do not useeval.

использовать что-то вроде этого, вместо:

var obj = {hair: "yellow", eyes: "blue"}; 
 
var format = "{hair} {eyes}"; 
 

 
// Option 1: manual replacement 
 
var result = format.replace('{hair}', obj.hair).replace('{eyes}', obj.eyes); 
 
console.log(result); 
 

 
// Option 2: automatic replacement 
 
var result = format; 
 
for(var key in obj){ 
 
    result = result.replace('{' + key + '}', obj[key]); 
 
} 
 
console.log(result);

Построить строку шаблона, а затем использовать манипуляции со строками, чтобы заменить поля.

Если вы можете использовать ES6, она позволяет template literals из коробки:

var obj = {hair: "yellow", eyes: "blue"}; 
 
var result = `${obj.hair} ${obj.eyes}`; 
 

 
console.log(result);

+0

Я знаю, что это работа, но я должен использовать функцию eval. Как я могу сделать ? – Emrah

+0

Почему _ "must" _ вы используете 'eval', @Emrah? Почему это требование? – Cerbrus

+2

Если у вас возник вопрос: «Как впасть в дерево без ущерба для моего автомобиля» _, единственный правильный ответ: _ «Не входите в это дерево» _, @JaromandaX. Использование 'eval' похоже на то, как водить машину в дерево. – Cerbrus

0

Использование object.key получить как ожидается

var obje = {hair: "yellow", eyes: "blue"}; 
 
var format = "obje.hair + ' ' + obje.eyes"; 
 
console.log(eval(format));

+0

Я использовал object.key и формат показывает, что «желтый +» + синий, но эта строка не работает в eval-функции. По этой причине вместо желтого и синего должны быть obje.hair и obje.eyes – Emrah

+0

'object.key' означает, что я использовал обобщенные термины. В вашем случае 'object' является' obje', а 'key' -' hair' или 'eyes'. –

+0

Я понимаю, что вы имеете в виду. Если есть волосы в формате, я должен изменить obje.key. Это решение может работать. Можете ли вы дать код для изменения слов, например, от волос до obje.key. Кроме того, если я могу это сделать, я попробую это решение. – Emrah

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

  • Нет связанных вопросов^_^