关于两个数组的对比关系 比较,想请教下大家?

let arr1 = [333,555,222]
let arr2 = [100,200,300]

arr1 和 arr2 中的每项是对应关系, 请问如何比较 arr1中 最大值的那项,必须对应arr2中的最小值

意思就是说,按正常情况,arr1和arr2的对应关系应为:

let arr1 = [333,555,222]
let arr2 = [200,100,300]

请问如何去写判断?实际场景如:

image.png

需要满足,起订量越多的 价格要越便宜

阅读 1.1k
avatarAI BotBETA

要比较两个数组,并确保 arr1 中的最大值对应的元素是 arr2 中的最小值,可以使用循环和条件语句来完成。下面是一个可能的解决方案:

let arr1 = [333, 555, 222];
let arr2 = [100, 200, 300];

// 获取 arr1 中的最大值和对应索引
let maxValue = Math.max(...arr1);
let maxIndex = arr1.indexOf(maxValue);

// 获取 arr2 中的最小值和对应索引
let minValue = Math.min(...arr2);
let minIndex = arr2.indexOf(minValue);

// 检查最大值和最小值是否对应
if (maxIndex === minIndex) {
  console.log("满足条件:arr1中的最大值对应arr2中的最小值");
} else {
  console.log("不满足条件:arr1中的最大值对应arr2中的最小值");
}

这个解决方案首先使用 Math.maxMath.min 函数找到 arr1 和 arr2 中的最大值和最小值,然后使用 indexOf 方法获取它们在数组中的索引。最后,通过比较这两个索引是否相等,可以判断最大值是否对应最小值。

注意,如果存在多个最大值或最小值的情况,上述代码将检查第一个匹配的索引。如果需要检查所有匹配的索引,请使用循环来遍历数组。

3 个回答
function everyOrderMatch(arr1, arr2) {
  var list1 = [...arr1].sort((a,b) => a-b);
  var list2 = [...arr2].sort((a,b) => a-b);
  return arr1.every((n,i) => arr2[i] === list2[list2.length-1-list1.indexOf(n)])
}

把两个数组从小到大排序,list1.indexOf(n)取出arr1的数值的排序值,list2.length-1-list1.indexOf(n)是1中的排序值对应的2中的排序值(最小对应最大),arr2[i] === m判断该值是否等于arr2中相同索引的数值

按照你的需求翻译出来大致就是这样

  • 找到 arr1 的最大值索引
  • 判断 arr2 同索引位的值是不是 arr2 中的最小值
function validate(target, source) {
    const targetMax = Math.max(...target);
    const targetMaxIndex = target.findIndex(item => item === targetMax)

    const sourceMin = Math.min(...source)

    return source[targetMaxIndex] === sourceMin
}
let arr1 = [333,555,222]
let arr2 = [100,200,300]
validate(arr1, arr2) // false
let arr1 = [333,555,222]
let arr2 = [200,100,300]
validate(arr1, arr2) // true
新手上路,请多包涵
let arr1 = [333, 555, 222, 444];
let arr2 = [200, 100, 300, 110];

function fn(countArr, priceArr) {
    let newArr = priceArr.map((price, index) => ({
        count: countArr[index],
        price: price,
    }));
    // 数量升序 比较 价格降序
    arr1 = [...newArr].sort((a, b) => a.count - b.count)
    arr2 = [...newArr].sort((a, b) => b.price - a.price);
    return arr1.every((item, index) => item.price === arr2[index].price);
}

fn(arr1, arr2);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题