2017-03-04 4 views
8

の配列を解体、私は、このオブジェクトES6は、オブジェクト

const config = { 
    js: { 
     files: [ 
      { 
       src: './js/app.js', 
       name: 'script.js', 
       dest: 'public_html/js/' 
      }, 
      { 
       src: './js/admin.js', 
       name: 'script.js', 
       dest: 'public_html/js/' 
      } 
     ] 
    } 
}; 

を持っていると私は(すべてのソースを取得)、これを取得したい:私はループでそれを行う方法を知って

sources = ['./js/app.js', './js/admin.js'] 

// or, at least 
sources = [{'./js/app.js'}] 

、私はES6を分解することでそれを行うことはできますか?

のような何か:

{sources = [{src}]} = config.js; 

OR

{[{src}] : sources} = config.js; 
+3

あなたがループの上に非構造を使用する特別な理由はありますか?あるいは、単純な 'マップ'? – chazsolo

+1

ループを使用するだけです。仕事に間違ったツールを強制しないでください。 – Carcigenicate

+3

'var sources = config.js.files.map(e => e.src)' –

答えて

8

非構造は、このような場合のためのものではありません。単にmap()を使用するだけで簡単に仕事が完了します。

const config = { 
 
    js: { 
 
     files: [ 
 
      { 
 
       src: './js/app.js', 
 
       name: 'script.js', 
 
       dest: 'public_html/js/' 
 
      }, 
 
      { 
 
       src: './js/admin.js', 
 
       name: 'script.js', 
 
       dest: 'public_html/js/' 
 
      } 
 
     ] 
 
    } 
 
}; 
 

 
console.log(config.js.files.map(x => x.src));

1

それは、配列によるループまたはマップすることなく、このような何かをdestructureすることはできません。

let srcs = []; 
for (let {src} of config.js.files) { 
    srcs.push(src); 
} 

しかし、より良いアプローチは、配列のメソッドを使用することです:

// using map 
let srcs = config.js.files.map(file => file.src); 

// or by using reduce 
let srcs = config.js.files.reduce((result, file) => result.concat(file.src), []); 
0

JavaScriptを使用Array.map()方法

あなたがファイルを反復処理するために-のループにな破壊を使用することができます。

DEMO

const config = { 
 
    js: { 
 
     files: [ 
 
      { 
 
       src: './js/app.js', 
 
       name: 'script.js', 
 
       dest: 'public_html/js/' 
 
      }, 
 
      { 
 
       src: './js/admin.js', 
 
       name: 'script.js', 
 
       dest: 'public_html/js/' 
 
      } 
 
     ] 
 
    } 
 
}; 
 

 
var res = config.js.files.map(function(item) { 
 
    return item.src; 
 
}); 
 

 
console.log(res);

1

あなたはArray#entriesのようなイテレータとfor ... of statementと一時変数indexで構造化代入使用することができます。

var config = { js: { files: [{ src: './js/app.js', name: 'script.js', dest: 'public_html/js/' }, { src: './js/admin.js', name: 'script.js', dest: 'public_html/js/' }] } }, 
 
    index, 
 
    result = []; 
 

 
for ({ 0: index, 1: { src: result[index] } } of config.js.files.entries()); 
 

 
console.log(result)

関連する問題