Как интерполировать переменную внутри объекта в JavaScript? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть эта часть объекта:

js: {
    cwd: 'src/js',
    src: [ "src/js/*.js", "src/js/*.min.js" ],
    dest: 'dist/js'
}

Как вставить свойство cwd в свойство src, чтобы оно выглядело следующим образом?

src: [ `${cwd (or js.cwd)}/*.JS .. etc ]

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

С оператором распространения ES2018 ' :

const foo = {
    ...js,
  src: [...js.src, js.cwd]
}
0 голосов
/ 24 октября 2018

То, что вы хотите, является вычисляемым свойством, поэтому используйте геттер.

const js = {
    cwd: 'src/js',
    get src() {
      return [ "/*.js", "/*.min.js" ]
        .map(ending => this.cwd + ending)
     },
    dest: 'dist/js'
}

console.log(js)
0 голосов
/ 24 октября 2018

Вы можете сделать это, используя Array#shift(), Array#map() и Array#push() методы как это:

js = [js].map(a => {
  a.src.push(a.cwd);
  delete a.cwd;
  return a;
}).shift();

Демо:

var js = {
  cwd: 'src/js',
  src: ["src/js/*.js", "src/js/*.min.js"],
  dest: 'dist/js'
};

js = [js].map(a => {
  a.src.push(a.cwd);
  delete a.cwd;
  return a;
}).shift();

console.log(js);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...