【问题标题】:Get small element index till array length获取小元素索引直到数组长度
【发布时间】:2016-02-25 04:59:07
【问题描述】:

我必须对一个数组进行排序并想要获取索引,以便我可以根据该索引对另一个数组进行排序.. 有两个数组ab 我将该数组的除法保存在第三个数组中,即sortDiv 现在我想要小元素的索引,以便我可以根据索引对ab 进行排序。 代码就像

   var a = [6, 7, 8, 9];
var b = [1, 2, 3, 4];

var sortA = [],
  sortB = [],
  sortDiv = [];
var div = a[0] / b[0];
for (var i = 0; i < a.length; i++) {
  sortDiv.push(a[i] / b[i]);
}
var temp = sortDiv;
for (var i = 1; i < sortDiv.length; i++) {
  var val = Math.min.apply(Math, temp);
  var key = sortDiv.indexOf(val);
  sortA.push(a[key]);
  sortB.push(b[key]);

  if (key > -1)
temp.splice(key, 1);
}
console.log(sortA + " " + sortB);
我得到了[9,8][4,3] 的b ..而我想要a=[9,8,7,6] b=[1,2,3,4] 但是拼接不是一个好的选择..我需要一个只删除元素而不是索引的函数..有什么想法吗?

更新 随着问题的解决,但我想知道 是否可以删除元素但不能删除数组中的索引?

【问题讨论】:

  • 你能澄清一下你到底想要什么吗?
  • @HeemanshuBhalla 是的,我会评论同样的事情。同时删除所有不必要的代码以更具体。
  • @HeemanshuBhalla 我已经更新了我的问题,请查看
  • 查看这个stackoverflow链接stackoverflow.com/questions/17387571/…
  • 这有助于thanx @RajeshJangid

标签: javascript


【解决方案1】:

尽量不要删除元素,只用最大元素+1替换它,它会正常工作这里是更新的代码

var a = [6, 7, 8, 9];
var b = [1, 2, 3, 4];

var sortA = [],
  sortB = [],
  sortDiv = [];
var div = a[0] / b[0];
for (var i = 0; i < a.length; i++) {
  sortDiv.push(a[i] / b[i]);
}
console.log(sortDiv);

var temp = sortDiv;
var max = Math.max.apply(Math, temp);  // here we find the maximum
max += 1;
for (var i = 1; i <= sortDiv.length; i++) {
  var val = Math.min.apply(Math, temp);
  console.log(val);
  var key = sortDiv.indexOf(val);
  sortA.push(a[key]);
  sortB.push(b[key]);
  temp[key] = max;   // here we update the minimum with maximum+1
}
console.log(sortA + " " + sortB);

【讨论】:

  • 不能用拼接吗?我们可以从数组中删除元素而不是索引吗?
  • 使用拼接会在一次迭代后更改元素的索引,因此我们不能在这里使用拼接
  • 不知道确切,但我认为在保持索引未定义的情况下无法删除元素
【解决方案2】:

如果问题是关于使用 splice 根据值而不是索引删除项目,获取索引,然后使用 splice:

var a = ['a', 'b', 'c'];
a.splice(a.indexOf('b'), 1);
console.log(a); // ["a", "c"]

【讨论】:

  • 我使用了 splice 但它没有给出合适的结果
  • “适当”还是“正确”?您是要删除对 slice 的使用,更正对 splice 的使用,还是进行其他操作?
  • 是的,我的意思是正确的..我没有得到我想要的答案..我不知道 splice 是否正确使用方法
猜你喜欢
  • 2011-02-16
  • 2020-06-08
  • 2020-06-21
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
相关资源
最近更新 更多