将 javascript 中的嵌套数组对象更改为按值类型的对象
change nested array object to objects by value type in javascript
如何修改数组对象为javascript中的对象。
我有对象 obj1
,将 details 键的值更改为新对象 javascript
function newObj(obj1){
return Object.assign({}, ...obj1.map(e=>(e.details)));
}
var r1= this.newObj(obj1)
var obj1 = [
{
details: {
"info":["stocks","finance",""],
"sales":["analytics"]
}
}
]
var obj2 = [
{
details: {
"city":{"SG"}
}
}
]
Expected Output
//for obj1 (show only first value of array)
{
stocks: "stocks",
analytics: "analytics"
}
//obj2
{
SG: "SG"
}
obj2
中的对象应该有键。
为了解决这个问题,我们需要保留一个object/map来填充函数要返回的值。因此,您需要遍历每个 detail
元素并获取每个 属性 的值。然后,我们可以检查它是 array
还是 object
并相应地填充 map
:
var obj1 = [
{
details: {
"info":["stocks","finance",""],
"sales":["analytics"]
}
}
]
var obj2 = [
{
details: {
"city":{name:"SG"}
}
}
]
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 r1= this.newObj(obj1)
console.log(r1);
var r2 = this.newObj(obj2)
console.log(r2);
如何修改数组对象为javascript中的对象。
我有对象 obj1
,将 details 键的值更改为新对象 javascript
function newObj(obj1){
return Object.assign({}, ...obj1.map(e=>(e.details)));
}
var r1= this.newObj(obj1)
var obj1 = [
{
details: {
"info":["stocks","finance",""],
"sales":["analytics"]
}
}
]
var obj2 = [
{
details: {
"city":{"SG"}
}
}
]
Expected Output
//for obj1 (show only first value of array)
{
stocks: "stocks",
analytics: "analytics"
}
//obj2
{
SG: "SG"
}
obj2
中的对象应该有键。
为了解决这个问题,我们需要保留一个object/map来填充函数要返回的值。因此,您需要遍历每个 detail
元素并获取每个 属性 的值。然后,我们可以检查它是 array
还是 object
并相应地填充 map
:
var obj1 = [
{
details: {
"info":["stocks","finance",""],
"sales":["analytics"]
}
}
]
var obj2 = [
{
details: {
"city":{name:"SG"}
}
}
]
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 r1= this.newObj(obj1)
console.log(r1);
var r2 = this.newObj(obj2)
console.log(r2);