我正在获取这样的原始数据
SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017;
我希望将此作为键值对。所以,首先我像这样用;
分隔数据
data.split(';');
输出
[ 'SECRET_TOKEN=Iwillruletheworld',
'SECRET_REFRESH_TOKEN=Iwillruletheworld',
'SERVER_PORT=3000',
'SERVER_WS_PORT=4000',
'NODE_URI=http://test.abc.com/#/',
'MONGODB_DEFAULT_URI=mongodb',
'MONGODB_HOST=localhost',
'MONGODB_PORT=27017'
]
现在我要将其设置为键值对
预期产量
[ 'SECRET_TOKEN'='Iwillruletheworld',
'SECRET_REFRESH_TOKEN'='Iwillruletheworld',
'SERVER_PORT'='3000',
'SERVER_WS_PORT'='4000',
'NODE_URI'='http://test.abc.com/#/',
'MONGODB_DEFAULT_URI'='mongodb',
'MONGODB_HOST'='localhost',
'MONGODB_PORT'='27017'
]
我想在发生'
的任何地方插入=
。谁能帮帮我。
答案 0 :(得分:4)
假设您想要作为结果的对象(因为您提供的输出实际上是无效的),则可以除以;
,删除空项目(.filter(Boolean)
)和reduce
建立键/值对对象。
当然,此示例假定输入中没有重复的键。
let input = `SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017;`;
let res = input.split(';').filter(Boolean).reduce((acc, next) => {
let [key, value] = next.split('=');
acc[key] = value;
return acc;
}, {});
console.log(res);
答案 1 :(得分:2)
您可以将其转换为JavaScript对象(而不是数组):
var arr = [ 'SECRET_TOKEN=Iwillruletheworld',
'SECRET_REFRESH_TOKEN=Iwillruletheworld',
'SERVER_PORT=3000',
'SERVER_WS_PORT=4000',
'NODE_URI=http://test.abc.com/#/',
'MONGODB_DEFAULT_URI=mongodb',
'MONGODB_HOST=localhost',
'MONGODB_PORT=27017'
];
var obj = {};
arr.forEach((x) => {
var kv = x.split('=');
obj[kv[0]] = kv[1];
});
console.log(obj);
答案 2 :(得分:1)
您可以使用;
进行拆分,然后使用=
进行拆分,并使用Array.prototype.map
返回对象数组,然后使用Object.assign
将其转换为object
>
let str = 'SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017';
let out = Object.assign(str.split(';').map(e => ({[e.split('=')[0]]:e.split('=')[1]})));
console.log(out)
答案 3 :(得分:1)
尝试使用此字符串数组:
const str = 'SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017;'
const strArray = str.split(';');
const corrArray = strArray.map(s=> s.replace('=', "'='")).map(s=> `'${s}'`);
console.log(corrArray);
如果需要对象:
const str = 'SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017;'
const objs = str.split(';').map(a=> {
const divided = a.split('=');
const obj = {};
obj[divided[0]] = divided[1];
return obj;
})
答案 4 :(得分:1)
let data = 'SECRET_TOKEN=Iwillruletheworld;SECRET_REFRESH_TOKEN=Iwillruletheworld;SERVER_PORT=3000;SERVER_WS_PORT=4000;NODE_URI=http://test.abc.com/#/;MONGODB_DEFAULT_URI=mongodb;MONGODB_HOST=localhost;MONGODB_PORT=27017';
//assuming the data you receive is a string
let arr = data.split(';');
let dataObj = {};
for (let piece of arr){
let pieceToKeyVal = piece.split('=');
dataObj[pieceToKeyVal[0]] = pieceToKeyVal[1];
}
console.log(dataObj);