unt*_*tyy 0 javascript object reactjs
我怎样才能循环这个对象(数据)并返回一个对象数组(输出)就像这样。基本上具有这些特定的属性和值
data = {
"model-10389": 164703,
"model-10388": 164704,
"model-10387": 164705,
}
const output = [
{
modelId : 10389,
id : 164703
},
{
modelId : 10388,
id : 164704
},
{
modelId : 10387,
id : 164705
},
]
Run Code Online (Sandbox Code Playgroud)
这就是我现在所拥有的
Object.keys(data).map(function(key, index) {
console.log(data[key])
});
Run Code Online (Sandbox Code Playgroud)
或这个
for (const property in data) {
console.log(`${property}: ${data[property]}`);
}
Run Code Online (Sandbox Code Playgroud)
将问题分解为小部分:
Array.map它[key, value]数组,我们可以使用解构来.map轻松访问。modelId,我们需要.splitkey,并获取 后面的部分-,然后将其解析为数字。id只是价值。const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 };
const result = Object.entries(data)
.map(([key, value]) => ({
modelId: parseInt(key.split('-')[1], 10),
id: value
}));
console.log(result);Run Code Online (Sandbox Code Playgroud)
比split, id 使用正则表达式提取 id 更快的替代方案:
modelId: parseInt(key.match(/\d+/)[0], 10),
Run Code Online (Sandbox Code Playgroud)
但是,如果我们要尽可能优化此转换,我们将不得不进行更多更改:
+代替parseInt.for in循环而不是Object.entriesand .map。.split这会让你:
modelId: parseInt(key.match(/\d+/)[0], 10),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |