gpt4 book ai didi

javascript - 使用 lodash 映射复杂的 JSON

转载 作者:行者123 更新时间:2023-11-30 09:23:56 25 4
gpt4 key购买 nike

我正在尝试将数据从一种格式映射到另一种格式,但遇到了一些困难。

第一个

来自:

  types: {
one: [0.0954835843,6.054385,84.40238],
two: [0.0954835843,6.054385,84.40238],
three: [0.0954835843,6.054385,84.40238]
},

    types: [
[0.0954835843,6.054385,84.40238 , 'one'],
[0.0954835843,6.054385,84.40238, 'two'],
[0.0954835843,6.054385,84.40238, 'three']
],

第二个通过从两个对象中获取数据来匹配ID

          types:[{
id:1,
data:[
[
'temp',
'46%',
'14.00',
'1388.68561604',
'1388.68561604',
'2018-02-12 18:21'

],
[
'nottemp',
'46%',
'14.00',
'1388.68561604',
'1388.68561604',
'2018-02-12 18:21'

],
]
},
{
id:2,
data:[
[
'temp',
'46%',
'14.00',
'1388.68561604',
'1388.68561604',
'2018-02-12 18:21'

],
[
'nottemp',
'46%',
'14.00',
'1388.68561604',
'1388.68561604',
'2018-02-12 18:21'

],
]
}]






data: [
{
id: 1,
name: 'sibling',
},
{
id: 2,
name: 'parent',
},
]

并以 types.data 中的所有项目结束,格式如下:

        [
'temp',
'46%',
'14.00',
'1388.68561604',
'1388.68561604',
'2018-02-12 18:21'
'parent' //or sibling, depends on id

]

我实际上不知道如何通过一些映射或过滤来实现它。如果没有大量修改器并且没有在此过程中创建一些额外的数组,我很难实现它。有什么办法可以优化吗?

编辑对于第二期,我有:

   mapElement: function(){
let that=this;
return _.map(this.getTypesData,function(element){
let data=[];
let pairName = that.getFamily(element.id); //todo: matching id of Type with id of object with names
element.data.forEach(function(element){
data.push([
pairName,
element[0],
element[1],
element[2],
]);
});
return data;
});
}

最佳答案

第一个问题:

_.map super 简单:

// Also handle case value is not array
types = _.map(types, (val, key) => _.isArray(val) ? v.concat(key) : [val].concat(key));

第二个问题:

我针对性能进行了优化:

//clone to new object to avoid modifying original data
const cloneData = _.cloneDeep(data);

types = _.map(types, (val, key) => {
const index = _.findIndex(cloneData, { id: val.id});
val.data = _.map(val.data, (v)=> _.isArray(v) ?v.concat(cloneData[index].name) : [v].concat(cloneData[index].name));
//remove when found id to shorten the array
// if the types[].id is not unique, remove this
cloneData.splice(index,1);

return val;
})

关于javascript - 使用 lodash 映射复杂的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958879/

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