以内插顺序将项目推送到数组
Pushing items to array in an interpolated order
我有一个对象数组,我正在尝试在一个新数组中插入数据。
这是数组,可能有两个或更多对象:
const param = [{
sortType: "ascending",
sortField: "id",
},
{
sortType: "descending",
sortField: "title",
},
];
let sortFields = [];
let sortTypes = [];
let sortString = [];
//iterates the sort params
for (let p of param) {
sortFields.push(p.sortField);
sortTypes.push(p.sortType);
}
for (let st of sortTypes) {
sortString.push(st === "ascending" ? "+" : "-");
for (let sf of sortFields) {
sortString.push(sf);
}
}
console.log({
sortString
})
我打算做的是拥有一个具有以下输出的数组:
["+id","-title"]
目前我被两个内插的 for 循环困住了,它们做了一些非常不同的事情。
我已经尝试标记循环并在内部循环中使用 continue
关键字,但仍然给我一个非常不同的输出。
关于如何实现这一点有什么建议吗?
也许分别对两个数组进行循环,然后创建一个新循环来插入和连接数组中的字符串?
感谢任何帮助!
您可以使用Array#map将每个条目变成您想要的字符串。
如果您要遍历循环并将项目推送到数组,很可能可以使用 Array#map.
以更简洁的方式完成
const param = [{
sortType: "ascending",
sortField: "id",
},
{
sortType: "descending",
sortField: "title",
},
];
const sortString = param.map((p) => {
return p.sortType === "ascending" ? `+${p.sortField}` : `-${p.sortField}`
});
console.log({
sortString
})
你循环太多了。您可以简单地使用 Array.prototype.map
函数:
param.map(el => (el.sortType === 'ascending' ? '+' : '-') + el.sortField)
我有一个对象数组,我正在尝试在一个新数组中插入数据。
这是数组,可能有两个或更多对象:
const param = [{
sortType: "ascending",
sortField: "id",
},
{
sortType: "descending",
sortField: "title",
},
];
let sortFields = [];
let sortTypes = [];
let sortString = [];
//iterates the sort params
for (let p of param) {
sortFields.push(p.sortField);
sortTypes.push(p.sortType);
}
for (let st of sortTypes) {
sortString.push(st === "ascending" ? "+" : "-");
for (let sf of sortFields) {
sortString.push(sf);
}
}
console.log({
sortString
})
我打算做的是拥有一个具有以下输出的数组:
["+id","-title"]
目前我被两个内插的 for 循环困住了,它们做了一些非常不同的事情。
我已经尝试标记循环并在内部循环中使用 continue
关键字,但仍然给我一个非常不同的输出。
关于如何实现这一点有什么建议吗? 也许分别对两个数组进行循环,然后创建一个新循环来插入和连接数组中的字符串?
感谢任何帮助!
您可以使用Array#map将每个条目变成您想要的字符串。
如果您要遍历循环并将项目推送到数组,很可能可以使用 Array#map.
以更简洁的方式完成const param = [{
sortType: "ascending",
sortField: "id",
},
{
sortType: "descending",
sortField: "title",
},
];
const sortString = param.map((p) => {
return p.sortType === "ascending" ? `+${p.sortField}` : `-${p.sortField}`
});
console.log({
sortString
})
你循环太多了。您可以简单地使用 Array.prototype.map
函数:
param.map(el => (el.sortType === 'ascending' ? '+' : '-') + el.sortField)