2016-02-25 76 views
0

我有數組排序,並希望得到索引,這樣我可以排序這個指數的基礎上,另一個數組.. 有兩個陣列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] for b..while我想 a=[9,8,7,6] b=[1,2,3,4] 但拼接不是一個好的選擇..我需要一個函數,只刪除元素不索引..任何想法請嗎?

修訂 作爲問題解決,但我想知道, 是否可以刪除元素,但不是在數組的索引?

+0

你能否澄清一下你究竟想要什麼。 –

+0

@HeemanshuBhalla是的,我會評論同樣的事情。同時刪除所有不必要的代碼以使其更具體。 – developer033

+0

@HemanshuBhalla我已經更新了我的問題,請檢查出 – Dhara

回答

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); 
+0

Thanku很多..它解決了:) – Dhara

+0

拼接?我們可以從數組中刪除元素而不是索引嗎? – Dhara

+0

使用拼接在一次迭代後改變了元素的索引,因此我們不能在這裏使用拼接 –

0

如果問題是關於使用拼接,以除去基於價值,而不是指數的項目,得到了指標,然後使用拼接:

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

我已經使用拼接,但它沒有給出適當的結果 – Dhara

+0

'適當'或'正確'?你是否試圖刪除你使用切片,糾正你使用拼接,或其他? –

+0

是的,我的意思是正確的..我沒有得到我的答案,因爲我想..我不知道拼接是否正確的方法來使用或不 – Dhara

相關問題