Динамический доступ к свойству объекта с помощью переменной

Если вы находитесь в phpMyAdmin, и у вас есть только минимальное изменение, вы можете сделать это простым способом.

  • Войдите в свой phpMyAdmin
  • Выберите базу данных, которую вы необходимо выполнить изменения
  • Нажмите на опцию поиска

Вы всегда можете выбрать либо все таблицы, либо любые. Не забудьте указать ключевое слово поиска, оно будет использоваться в качестве подстановочного знака (%).

  • Теперь нажмите «Go».
  • Это даст вам все таблицы, в которых есть элемент вы искали.

  • Теперь вы можете открывать каждую таблицу по очереди и выполнять обновление. Образец запроса сгенерирован может выглядеть следующим образом. SELECT * FROM sibeecst_passion. wp_ewwwio_images WHERE (CONVERT (id ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (path ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (image_md5 ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (results ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (gallery ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (image_size ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee% 'ИЛИ CONVERT (orig_size ИСПОЛЬЗОВАНИЕ utf8) LIKE'% sibee% 'ИЛИ CONVERT (updates ИСПОЛЬЗОВАНИЕ utf8) LIKE'% sibee% 'ИЛИ CONVERT (updated ИСПОЛЬЗОВАНИЕ utf8) LIKE'% sibee% 'ИЛИ CONVERT (trace ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (attachment_id ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (resize ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (converted ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (level ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (pending ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee%' ИЛИ ​​CONVERT (backup ИСПОЛЬЗОВАНИЕ utf8) LIKE '% sibee% ')

612
задан Taryn 22 March 2017 в 16:12
поделиться

2 ответа

Существует несколько возможностей:

const test = {
    prop1: {
      prop2: {
        prop3: "I'm very nested"
      }
    }

const test1 = test.prop1.prop2.prop3
const test2 = test['prop1']['prop2']['prop3']
const test3 = test['prop1.prop2.prop3'] //will return undefined
const test4 = _.get(test, 'prop1.prop2.prop3') //use lodash

, Если Вы хотите получить вложенное значение динамично (например, переменной), Ваш наилучший вариант будет состоять в том, чтобы использовать lodash.

0
ответ дан 22 November 2019 в 21:47
поделиться

Например:

a = [ {b:[{a:1,b:[{c:1,d:2}]}]} ]

Вместо:

if(a && a[0] && a[0].b && a[0].b[0] && a[0].b[0].b && a[0].b[0].b[0] && a[0].b[0].b[0].d && a[0].b[0].b[0].d == 2 )  // true

Мы можем теперь:

if( getValue('a[0].b[0].b[0].d') == 2 ) // true

Вот код

/**
 * @method getValue
 * @description simplifies checking for existance and getting a deeply nested value within a ceratin context
 * @argument {string} s       string representation of the full path to the requested property 
 * @argument {object} context optional - the context to check defaults to window
 * @returns the value if valid and set, returns undefined if invalid / not available etc.
 */
var getValue = function( s, context ){
    var fn = function(){
        try{
            return eval(s);
        }catch(e){
            return undefined;
        }
    }
    return fn.call(context||window,s);
}
0
ответ дан 22 November 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: