从如下所示的字符串中获取:
“苹果香蕉26”
或
“狗喜欢食物”
人们将如何获得诸如以下对象:
Apple = {香蕉:“ 26”}
Dog = {喜欢:“食物”}
答案 0 :(得分:2)
假设您想要一个对象而不是字符串中的变量(这很难看),您可以简单地reduceRight()
let str = "Dog Likes Food"
let obj = str.split(' ').reduceRight((obj, word) => ({[word]: obj}))
console.log(obj)
这有一个额外的好处,就是它不在乎您有多少个单词:
let str = "Dog Likes To Eat Dog Food"
let obj = str.split(' ').reduceRight((obj, word) => ({[word]: obj}))
console.log(obj)
如果确定要获取变量Dog
,则可以使用Object.assign
将对象与window
对象合并以创建全局对象。但是,总有比创建全局变量更好的方法:
let str = "Dog Likes Food"
let obj = str.split(' ').reduceRight((obj, word) => ({[word]: obj}))
Object.assign(window, obj)
console.log(Dog)
答案 1 :(得分:0)
您可以尝试将3个单词的字符串转换为JSON对象,在下一个示例中,我将向您展示这个想法:
var string1 = "Apple Banana 26";
var string2 = "Dog Likes Food";
// Convert 3 words string to a JSON object.
function strToObj(str)
{
var items = str.split(' ');
if (items.length != 3)
return false;
var jsonStr = '{"' + items[0] + '":' +
'{"' + items[1] + '":"' +
items[2] + '"}}';
return JSON.parse(jsonStr);
}
// Test the method.
var apple = strToObj(string1);
if (apple)
console.log(apple);
else
console.log("Fail to convert!");
var dog = strToObj(string2);
if (dog)
console.log(dog);
else
console.log("Fail to convert!");