以键值格式在数组上插入对象

Iro*_*Man 12 javascript arrays

我有一个像这样的对象

var total = { 'Apple': 0.6,
              'Banana': 0.6,
              'Orange': 1,
              'Grapes': 0.4,
              'Pineapple': 0.4 }
Run Code Online (Sandbox Code Playgroud)

为此,首先,我将检查对象的长度.

var len = Object.keys(total).length;
Run Code Online (Sandbox Code Playgroud)

现在我想将它转换为key-value数组下的正确对象格式.像这样的东西:

[
   {'name': 'Apple', 'value': 0.6},
   {'name': 'Banana', 'value': 0.6},
   {'name': 'Orange', 'value': 1},
   {'name': 'Grapes', 'value': 0.4},
   {'name': 'Pineapple', 'value': 0.4}
]
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何解决这个问题的代码.任何帮助都是赞赏的

Sur*_*yan 32

您可以在对象键上使用Array#map函数,并使用所需的形状创建对象.

const total = { 
    'Apple': 0.6,
    'Banana': 0.6,
    'Orange': 1,
    'Grapes': 0.4,
    'Pineapple': 0.4 
};
              
const array = Object.keys(total)
                    .map(key => ({ name: key, value: total[key] }))
                    .sort((f, s) => f.value - s.value);

console.log(array);
Run Code Online (Sandbox Code Playgroud)

如果使用ES7或更高版本,则可以使用Object#条目替换Object#键.还使用对象拆解可在参数列表中获取和分别.namevalue

const total = { 
    'Apple': 0.6,
    'Banana': 0.6,
    'Orange': 1,
    'Grapes': 0.4,
    'Pineapple': 0.4 
};
              
const array = Object.entries(total)
                    .map(([name, value]) => ({ name, value }))
                    .sort((f, s) => f.value - s.value);;

console.log(array);
Run Code Online (Sandbox Code Playgroud)


Jon*_*lms 5

 const result = Object.entries(total).map(([name, value]) => ({name, value}));
Run Code Online (Sandbox Code Playgroud)

  • 一点点解释都有很长的路要走. (12认同)