Как интерполировать переменную внутри объекта в JavaScript?

1

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

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

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

src: [ '${cwd (or js.cwd)}/*.JS .. etc ]
Теги:
ecmascript-6
object
properties

3 ответа

0

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

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

console.log(js)
0

Вы можете сделать это, используя методы 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);
0

С распространенным оператором ES2018:

const foo = {
    ...js,
  src: [...js.src, js.cwd]
}
  • 0
    @str ты прав. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню