用空格分隔的字符串以javascript中的对象

时间:2018-10-20 04:16:56

标签: javascript

从如下所示的字符串中获取:

“苹果香蕉26”

“狗喜欢食物”

人们将如何获得诸如以下对象:

Apple = {香蕉:“ 26”}

Dog = {喜欢:“食物”}

2 个答案:

答案 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!");