gpt4 book ai didi

javascript - 我怎样才能将一个配置对象共享给多个数据

转载 作者:行者123 更新时间:2023-12-03 07:20:55 26 4
gpt4 key购买 nike

我有一个如下所示的配置数据结构。

const config = {
foo: 'bar',
king: [ { val: [], name: 'saber'}, { val: [], name: 'archer'} ],
};

我想分享上面的一对多数据对象,如下所示。

var data = {
group1: [ [1, 2, 3], ['a', 'b', 'c'] ],
group2: [ [4, 5, 6], ['d', 'e', 'f'] ],
};

我担心我不能表达清楚,比如我想要得到这样的最终结果。

{
group1: {
foo: 'bar',
king: [ {val: [1,2,3], name:'saber'}, {val: ['a','b','c'], name:'archer'} ],
},
group2: {
foo: 'bar',
king: [ {val: [4,5,6], name:'saber'}, {val: ['d','e','f'], name:'archer'} ],
},
}

我尝试使用assign()为每个数据共享一个配置,

我在下面编写了方法compose,但最终我注意到即使我使用Object.freeze()config也会改变,我不知道如何保护 config 变量,你能给我什么建议吗?

var compose = function(data) {
let mix = {};

Object.keys(data).map(function(key) {
mix[key] = Object.assign({},
config
);
mix[key].king.map(function(val, index) {
mix[key].king[index].val = data[key][index]; // config will be changed here :(
});
});

return mix;
};

问候。

最佳答案

你必须深度克隆config,你可以使用lodash例如:

'use strict'
var _ = require('lodash');

const config = {
foo: 'bar',
king: [{ val: [], name: 'saber' }, { val: [], name: 'archer' }],
};

var compose = function(data) {
let mix = {};

Object.keys(data).map(function(key) {
mix[key] = _.cloneDeep(config);
mix[key].king.map(function(val, index) {
mix[key].king[index].val = data[key][index]; // config will be changed here :(
});
});

return mix;
};

var data = {
group1: [[1, 2, 3], ['a', 'b', 'c']],
group2: [[4, 5, 6], ['d', 'e', 'f']],
};

var out = compose(data);
console.log(require('util').inspect(out, { depth: null }));

关于javascript - 我怎样才能将一个配置对象共享给多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com