如何根据javascript的值类型更改对象?
如何在javascript中将嵌套对象更改为新对象如何根据javascript的值类型更改对象?,javascript,arrays,object,Javascript,Arrays,Object,如何在javascript中将嵌套对象更改为新对象 function newObj(obj1) { let map = {}; obj1.forEach(e => { let details = e.details; Object.values(details).forEach(value => { if (Array.isArray(value) && value.length > 0) { map[valu
function newObj(obj1) {
let map = {};
obj1.forEach(e => {
let details = e.details;
Object.values(details).forEach(value => {
if (Array.isArray(value) && value.length > 0) {
map[value[0]] = value[0];
}
else if (typeof value === 'object') {
Object.values(value).forEach(val => { map[val] = val; });
}
})
});
return map;
}
var obj1 = [
{
details : {
"info" : ["stocks", "finance", ""],
"sales" : ["analytics"]
}
}
];
var obj2 = [
{
details : {
"city" : "SG"
}
}
];
var r1 = this.newObj(obj1);
var r2 = this.newObj(obj2);
我有一个objectobj
,其中如果细节是数组,那么在javascript中取第一个数组值作为值
function newObj(obj1) {
let map = {};
obj1.forEach(e => {
let details = e.details;
Object.values(details).forEach(value => {
if (Array.isArray(value) && value.length > 0) {
map[value[0]] = value[0];
}
else if (typeof value === 'object') {
Object.values(value).forEach(val => { map[val] = val; });
}
})
});
return map;
}
var obj1 = [
{
details : {
"info" : ["stocks", "finance", ""],
"sales" : ["analytics"]
}
}
];
var obj2 = [
{
details : {
"city" : "SG"
}
}
];
var r1 = this.newObj(obj1);
var r2 = this.newObj(obj2);
预期产量
//for obj1 (show only first value of array)
{
info : "stocks",
sales : "analytics"
}
//obj2
{
city : "SG"
}
我认为你把这件事复杂化了。看看下面的例子。逻辑是这样的:
详细信息
键映射中创建键
,并分配值[0]
映射中
函数newObj(obj){
设map={};
对象forEach(e=>{
让细节=e.细节;
Object.keys(细节).forEach(key=>{
var值=详细信息[键];
if(Array.isArray(value)和&value.length>0){
map[key]=值[0];
}否则{
映射[键]=值;
}
});
});
返回图;
}
变量obj1=[
{
详情:{
“信息”:[“股票”、“金融”、“信息”],
“销售”:[“分析”]
}
}
];
变量obj2=[
{
详情:{
“城市”:“SG”
}
}
];
var r1=新OBJ(obj1);
var r2=新OBJ(obj2);
控制台日志(r1);
控制台日志(r2)代码>我想你把这件事复杂化了。看看下面的例子。逻辑是这样的:
迭代详细信息
键
如果键下的值是数组,则在映射中创建键
,并分配值[0]
如果键下的值不是数组,则只需将其值复制到映射中
这就足够实现你想要的了
函数newObj(obj){
设map={};
对象forEach(e=>{
让细节=e.细节;
Object.keys(细节).forEach(key=>{
var值=详细信息[键];
if(Array.isArray(value)和&value.length>0){
map[key]=值[0];
}否则{
映射[键]=值;
}
});
});
返回图;
}
变量obj1=[
{
详情:{
“信息”:[“股票”、“金融”、“信息”],
“销售”:[“分析”]
}
}
];
变量obj2=[
{
详情:{
“城市”:“SG”
}
}
];
var r1=新OBJ(obj1);
var r2=新OBJ(obj2);
控制台日志(r1);
控制台日志(r2)代码>由于分解分配,这里有一个非常简洁的解决方案:
函数newObj(obj){
const[{details}]=obj;
const entries=Object.entries(详细信息)
.map(([key,value])=>([key,Array.isArray(value)→value[0]:value]);
返回对象.fromEntries(entries);
}
实例:
“严格使用”;
函数newObj(obj){
const[{details}]=obj;
const entries=Object.entries(详细信息)
.map(([key,value])=>([key,Array.isArray(value)→value[0]:value]);
返回对象.fromEntries(entries);
}
常数obj1=[
{
详情:{
信息:['股票','金融','',
销售:[“分析”]
}
}
];
常数obj2=[
{
详情:{
城市:“SG”
}
}
];
console.log(newObj(obj1));
console.log(newObj(obj2))代码>由于分解分配,这里有一个非常简洁的解决方案:
函数newObj(obj){
const[{details}]=obj;
const entries=Object.entries(详细信息)
.map(([key,value])=>([key,Array.isArray(value)→value[0]:value]);
返回对象.fromEntries(entries);
}
实例:
“严格使用”;
函数newObj(obj){
const[{details}]=obj;
const entries=Object.entries(详细信息)
.map(([key,value])=>([key,Array.isArray(value)→value[0]:value]);
返回对象.fromEntries(entries);
}
常数obj1=[
{
详情:{
信息:['股票','金融','',
销售:[“分析”]
}
}
];
常数obj2=[
{
详情:{
城市:“SG”
}
}
];
console.log(newObj(obj1));
console.log(newObj(obj2))代码>@Teemu我已经更新了代码,感谢您在obj1
&obj2
之后回复r1
&r2
?为什么这个。
?obj2
无效。什么是{“SG”}
?你的意思是[“SG”]
?@iAmOren感谢您的回复,已更新code@Teemu我已经更新了代码,感谢您在obj1
&obj2
之后回复r1
&r2
?为什么这个。
?obj2
无效。什么是{“SG”}
?你是说[“SG”]
?@iAmOren感谢您的回复,更新了代码