ES6解构一个对象数组

时间:2017-03-04 17:13:31

标签: javascript arrays object ecmascript-6

我有这个对象

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;

4 个答案:

答案 0 :(得分:9)

解构不适用于此类案例。只需使用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 :(得分:1)

由于数组的原因,如果没有循环或地图,就无法对此类内容进行解构。

您可以在for-of循环中使用destructuring来迭代文件:

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), []);

答案 2 :(得分:1)

您可以将解构与Array#entriesfor ... 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)

答案 3 :(得分:0)

使用JavaScript Array.map()方法。

<强>样本

&#13;
&#13;
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);
&#13;
&#13;
&#13;

相关问题