gpt4 book ai didi

javascript - 如何将数据从一个对象插入到另一个具有不同结构的对象以生成第三个对象

转载 作者:行者123 更新时间:2023-12-02 23:06:31 24 4
gpt4 key购买 nike

我试图从一个对象中提取数据并将该数据插入到另一个对象中,但是这两个对象具有不同的结构。而且它的对象非常大,超过 3000 行。

我需要检查 object1 中是否存在 dictionary[0].key.mcp[0] 以及 object2 中是否存在 conv[0].mcp 我需要将 4 种语言插入到 object1 dictionary[0].dicts 中:德语、瑞典语、中文和日语,如果不存在,则不执行任何操作

我认为也许使用 for 循环我将能够完成任务,但问题是在某些情况下,在键下方,值 mcp 会更改为另一个值。

对象 1

dictionary = [
{
"key": {
"mcp": [
"mcp.empty"
]
},
"dicts": {
"english": "",
"german": ""
},
"context": null,
"tags": [],
"edited": "2016-10-27T15:41:31.000Z"
},
{
"key": {
"mcp": [
"ui.controls.plasmacontrol.feeder"
]
},
"dicts": {
"english": "Feeder",
"german": "Förderer"
},
"context": null,
"tags": [],
"edited": "2016-10-27T15:41:31.000Z"
},

对象 2

var conv = [
{
"mcp": "mcp.empty",
"english": "",
"german": "",
"Swedish": "",
"chinese": "",
"japanese": ""
},
{
"mcp": "ui.controls.plasmacontrol.feeder",
"english": "Feeder",
"german": " Förderer ",
"Swedish": "Transportör",
"chinese": "送粉器",
"japanese": "粉末供給装置"
},
{
"mcp": "ui.controls.plasmacontrol.feeder1",
"english": "Feeder 1",
"german": "Förderer 1 ",
"Swedish": "Transportör 1",
"chinese": "1号送粉器",
"japanese": "粉末供給装置1"
},

预期结果是一个对象,其中包含从 object1 到 object2 插入的所有数据。

对象3(预期结果)

 dictionary = [
{
"key": {
"mcp": [
"mcp.empty"
]
},
"dicts": {
"english": "",
"german": "",
"Swedish": "",
"chinese": "",
"japanese": ""
},
"context": null,
"tags": [],
"edited": "2016-10-27T15:41:31.000Z"
},
{
"key": {
"mcp": [
"ui.controls.plasmacontrol.feeder"
]
},
"dicts": {
"english": "Feeder 1",
"german": "Förderer 1 ",
"Swedish": "Transportör 1",
"chinese": "1号送粉器",
"japanese": "粉末供給装置1"
},
"context": null,
"tags": [],
"edited": "2016-10-27T15:41:31.000Z"
},

到目前为止,我已经得到了这个并且返回了一些错误

import dictionary from "./dictionary.mjs";
import conv from "./converted.mjs";
import _ from "lodash";
import fs from "fs";
import util from 'util';


const newObject = _.map(dictionary, dictionaryItem => {
const key = _.get(dictionaryItem, "key.mcp[0]", "")
const isPresent = _.find(conv, { "mcp": key })
if(isPresent) {
/* console.log('se hizo') */
return { ...dictionaryItem, dicts: {
"english": isPresent.english,
"german": isPresent.german,
"Swedish": isPresent.Swedish,
"chinese": isPresent.chinese,
"japanese": isPresent.japanese
}
}
} else {
/* console.log('no') */
return dictionary
}
})

try {
const data = fs.writeFileSync('./final.js', util.inspect(newObject, {showHidden: false, depth: null}));
//file written successfully
} catch (err) {
console.error(err)
}

最佳答案

使用lodash首先导入到你要执行操作的地方

import _ from "lodash"
or
const _ = require("lodash")

const newObject = _.map(dictionary, dictionaryItem => {
const key = _.get(dictionaryItem, "key.mcp[0]", "")
const isPresent = _.find(conv, { "mcp": key })
if(isPresent) {
return { ...dictionaryItem, dicts: {
"english": isPresent.english,
"german": isPresent.german,
"Swedish": isPresent.Swedish,
"chinese": isPresent.chinese,
"japanese": isPresent.japanese
}
}
} else {
return dictionary
}
})

天啊,你得到了你想要的结果

关于javascript - 如何将数据从一个对象插入到另一个具有不同结构的对象以生成第三个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569165/

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