我正在嘗試從陣列中生成下面提到的物件。我已經嘗試過使用 Javascript 進行映射和推送,但我無法實作。請提供一些膠水來執行此操作。
fn();
function fn() {
const env = 'uat';
const userInput = 'appA';
var listOfApplications = [{
"appName": "common",
"data": {
"uat": {
"baseUrl": "http://commonurl.com",
"parameterX": "x",
"parameterY": "y"
}
}
},
{
"appName": "appA",
"data": {
"uat": {
"baseUrl": "http://uat.appA.com",
"parameterA": "a",
"parameterB": "b"
}
}
}
];
var config = {};
for (var i = 0; i < listOfApplications.length; i ) {
if (userInput == listOfApplications[i].appName) {
config[userInput] === listOfApplications[i].data[env];
} else if ('common' == listOfApplications[i].appName) {
config === listOfApplications[i].data[env];
}
}
console.log(config);
return config;
}
我正在嘗試產生下面提到的輸出。
{
"baseUrl": "http://commonurl.com",
"parameterX": "x",
"parameterY": "y",
"appA": {
"baseUrl": "http://uat.appA.com",
"parameterA": "a",
"parameterB": "b"
}
}
請幫助我
uj5u.com熱心網友回復:
您快到了。您只需要分配值而不是比較值
除此之外,我建議您使用傳播操作來克隆您的物件
fn();
function fn() {
const env = 'uat';
const userInput = 'appA';
var listOfApplications = [{
"appName": "common",
"data": {
"uat": {
"baseUrl": "http://commonurl.com",
"parameterX": "x",
"parameterY": "y"
}
}
},
{
"appName": "appA",
"data": {
"uat": {
"baseUrl": "http://uat.appA.com",
"parameterA": "a",
"parameterB": "b"
}
}
}
];
var config = {};
for (var i = 0; i < listOfApplications.length; i ) {
if (userInput === listOfApplications[i].appName) {
//assign values to config
config[userInput] = {...listOfApplications[i].data[env]};
}
if ('common' === listOfApplications[i].appName) {
//assign values to config
config = {...listOfApplications[i].data[env]};
}
}
console.log(config);
return config;
}
較短的版本find
fn();
function fn() {
const env = 'uat';
const userInput = 'appA';
var listOfApplications = [{
"appName": "common",
"data": {
"uat": {
"baseUrl": "http://commonurl.com",
"parameterX": "x",
"parameterY": "y"
}
}
},
{
"appName": "appA",
"data": {
"uat": {
"baseUrl": "http://uat.appA.com",
"parameterA": "a",
"parameterB": "b"
}
}
}
];
const common = listOfApplications.find(app => app.appName === "common").data[env]
const environment = listOfApplications.find(app => app.appName === userInput).data[env]
const config = {
...common,
[userInput]: {
...environment
}
}
console.log(config);
return config;
}
uj5u.com熱心網友回復:
你可以做:
(() => {
const env = 'uat'
const userInput = 'appA'
const listOfApplications = [{appName: 'appA',data: {uat: {baseUrl: 'http://uat.appA.com',parameterA: 'a',parameterB: 'b',},},},{appName: 'common',data: {uat: {baseUrl: 'http://commonurl.com',parameterX: 'x',parameterY: 'y',},},},]
const config = listOfApplications.reduce((a, c) => {
const options = {
[c.appName]: () => (a[userInput] = c.data[env]),
common: () => (a = { ...a, ...c.data[env] }),
}
options[c.appName]()
return a
}, {})
console.log(config)
return config
})()
uj5u.com熱心網友回復:
只需將嚴格相等的運算子 === 更改為賦值運算子 =
var config = {};
for (var i = 0; i < listOfApplications.length; i ) {
if (userInput == listOfApplications[i].appName) {
// here changed === to =
config[userInput] = listOfApplications[i].data[env];
} else if ('common' == listOfApplications[i].appName) {
// here changed === to =
config =listOfApplications[i].data[env];
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463340.html
標籤:javascript 数组
