let arr = [
{price: 5, userUid: 0, item_name: '测试3'},
{price: 20, userUid: 0, item_name: '测试2'},
{price: 23, userUid: 0, item_name: '测试1'},
{price: 39, userUid: 0, item_name: '测试2'},
{price: 43, userUid: 0, item_name: '测试1'},
{price: 55, userUid: 0, item_name: '测试3'},
{price: 66, userUid: 0, item_name: '测试2'},
{price: 72, userUid: 0, item_name: '测试3'},
{price: 82, userUid: 0, item_name: '测试3'},
{price: 97, userUid: 0, item_name: '测试3'},
]
let items = [
{ id: 1, num: 2 }
{ id: 2, num: 3 }
{ id: 3, num: 5 }
]
根据items数组里面num的值去arr数组里面拿数据,按竖向排序
期望得到数据格式:
let result= [
[{price: 5, userUid: 0, item_name: '测试3'},{price: 39, userUid: 0, item_name: '测试2'},]
[{price: 20, userUid: 0, item_name: '测试2'},{price: 43, userUid: 0, item_name: '测试1'},{price: 66, userUid: 0, item_name: '测试2'},]
[{price: 23, userUid: 0, item_name: '测试1'},{price: 55, userUid: 0, item_name: '测试3'},{price: 72, userUid: 0, item_name: '测试3'},{price: 82, userUid: 0, item_name: '测试3'},{price: 97, userUid: 0, item_name: '测试3'},]
]
麻烦各位大佬看看,感激不尽
const result: (typeof arr)[0][][] = new Array(items.length)
.fill(0)
.map(() => [])
for (let flag = true, index = 0; flag; ) {
flag = false
items.forEach((v, i) => {
const a = result[i]
if (a.length < v.num) {
a.push(arr[index++])
flag = true
}
})
}
console.log(result)
[
[
{ price: 5, userUid: 0, item_name: "测试3" },
{ price: 39, userUid: 0, item_name: "测试2" }
],
[
{ price: 20, userUid: 0, item_name: "测试2" },
{ price: 43, userUid: 0, item_name: "测试1" },
{ price: 66, userUid: 0, item_name: "测试2" }
],
[
{ price: 23, userUid: 0, item_name: "测试1" },
{ price: 55, userUid: 0, item_name: "测试3" },
{ price: 72, userUid: 0, item_name: "测试3" },
{ price: 82, userUid: 0, item_name: "测试3" },
{ price: 97, userUid: 0, item_name: "测试3" }
]
]
要实现您描述的功能,我们需要先根据 items
数组中的 num
值从 arr
数组中挑选出相应数量的元素,并且按照 items
数组中 id
的顺序进行组织。然后,对每个组内的元素按 price
进行排序。
但是,由于您提供的 items
数组在JavaScript中语法上是不正确的(缺少逗号分隔对象),我将首先纠正这个错误。然后,我将展示如何实现您所需的功能。
以下是完整的JavaScript代码示例:
let arr = [
{price: 5, userUid: 0, item_name: '测试3'},
{price: 20, userUid: 0, item_name: '测试2'},
{price: 23, userUid: 0, item_name: '测试1'},
{price: 39, userUid: 0, item_name: '测试2'},
{price: 43, userUid: 0, item_name: '测试1'},
{price: 55, userUid: 0, item_name: '测试3'},
{price: 66, userUid: 0, item_name: '测试2'},
{price: 72, userUid: 0, item_name: '测试3'},
{price: 82, userUid: 0, item_name: '测试3'},
{price: 97, userUid: 0, item_name: '测试3'},
];
let items = [
{ id: 1, num: 2 },
{ id: 2, num: 3 },
{ id: 3, num: 5 }
];
// 根据items的num值从arr中挑选数据,并按items的id顺序排序
let result = items.map(item => {
// 从arr中挑选前num个价格最低的元素
let selectedItems = arr.slice(0).sort((a, b) => a.price - b.price).slice(0, item.num);
return selectedItems;
});
// 输出结果
console.log(result);
注意:
item
的 num
值从 arr
中选择了价格最低的 num
个元素。如果 arr
中的元素不足以满足所有 num
的要求,则结果中的某些数组可能会短于指定的 num
。result
是一个二维数组,其中每个子数组都包含了根据 items
数组中相应 id
的 num
值选出的元素,并且这些元素在子数组内部已按 price
排序。items
数组中的 id
顺序,将所有选中的元素合并到一个单一数组中,而不是一个二维数组,那么需要稍微修改上述逻辑,但根据您的问题描述,上述答案应该符合您的需求。如果您的意图是进一步处理这些数据(如合并到单一数组并按 price
排序等),请根据具体需求调整代码。
原数据: 根据arr数组里面的price排序 arr数组根据res里面的item_type对应的值生成的 期望得到: 麻烦各位大佬帮我看看 问题已解决,谢谢各位大佬们。
arr数组最小长度是4最大是8 let num = 600;暂时写死600,这个数自定义输入的 麻烦各位大佬帮忙看看
原数据: 根据arr数组里面的price字段排序 期望得到: 麻烦各位大佬帮我看看
let num = 600; num是最大数为600,然后根据arr数组里面的test的值之和(5+4+5+6)为20, 600 / 20 = 30; 希望得到下面的格式: 图片第一列5个输入框对应数组arr里面下标为0的test的值为5 图片第二列4个输入框对应数组arr里面下标为1的test的值为4 ... 控制1-30之间的随机数里面的输入框修改的时候只能输入1-30的数, 控制31-60之
本文向大家介绍JavaScript对象数组的排序处理方法,包括了JavaScript对象数组的排序处理方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript对象数组的排序处理方法。分享给大家供大家参考,具体如下: javascript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。 arrayobj.sort(sortfunction); 参数:
js 数组的数据处理 这个2数字不是固定的, 如果a这个值是2 我需要得到arr为 arr = [9] 如果a这个值是4 我需要得到arr为 arr = [7,8,9] 大佬们帮我看看