作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从一个对象中提取数据并将该数据插入到另一个对象中,但是这两个对象具有不同的结构。而且它的对象非常大,超过 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/
我是一名优秀的程序员,十分优秀!