jquery 如何用X替换数组的元素

xdnvmnnf  于 2023-06-05  发布在  jQuery
关注(0)|答案(1)|浏览(156)

请我试图找到最小值内我的数组和替换最小值与X相同的元素不被挑选为最小值再次
这是我做的Var arr = [3,8,2,5,1]; Var minIndex;

While(arr.indexOf(‘X’) === -1){
minIndex = 0;
$.each(arr,function(index,value){
if (value < arr.[minIndex]){
minIndex = index;
}
});
arr[minIndex] = ‘X’;

}
Console.log(arr);

但只有第一个极小值,也就是1,并被X代替
我不知道我做错了什么请帮忙
用X替换数组的元素

yuvru6vn

yuvru6vn1#

如果你真的不关心数组。对数组进行排序,并在使用时将其删除。没有必要一直看最小值。

function getLeast(arr) {
  const remaining = [...arr].sort()
  return () => {
    if (!remaining.length) return undefined;
    return remaining.shift();
  }
}

const nums = [3, 8, 2, 5, 1];

const genNums = getLeast(nums);
console.log(genNums()); // 1
console.log(genNums()); // 2
console.log(genNums()); // 3
console.log(genNums()); // 5
console.log(genNums()); // 8
console.log(genNums()); // undefined

使用发电机

function* getLeast(arr) {
  const remaining = [...arr].sort()
  while (remaining.length) {
    yield remaining.shift();
  }
}

const nums = [3, 8, 2, 5, 1];

const genNums = getLeast(nums);
console.log(genNums.next().value); // 1
console.log(genNums.next().value); // 2
console.log(genNums.next().value); // 3
console.log(genNums.next().value); // 5
console.log(genNums.next().value); // 8
console.log(genNums.next().value); // undefined

替换为x,这不是最佳解决方案

const nums = [3, 8, 2, 5, 1];

function getLeast(array) {
  const result = array.reduce((obj, value, index) => {
    if (value === 'X') return obj;
    return (!obj || obj.value > value) ? {
      value,
      index
    } : obj;
  }, null)

  if (!result) return;
  array.splice(result.index, 1, 'X');
  return result.value;
}

console.log(getLeast(nums));
console.log(getLeast(nums));
console.log(getLeast(nums));
console.log(getLeast(nums));
console.log(getLeast(nums));
console.log(getLeast(nums));

相关问题