第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將并行數(shù)組組合成單個(gè)對(duì)象數(shù)組并排序

將并行數(shù)組組合成單個(gè)對(duì)象數(shù)組并排序

aluckdog 2022-05-22 11:06:25
我有一個(gè)帶有標(biāo)題的輸入表:內(nèi)部尺寸、外部尺寸和數(shù)量。用戶最多可以輸入 20 個(gè)不同的實(shí)例。例如用戶輸入:第 1 行 - ID = 20,OD = 30,QTY = 6第 2 行 - ID = 10,OD = 15,QTY = 3第 3 行 - ID = 40,OD = 52,QTY = 15等等...目前我正在以并行數(shù)組的形式收集所有 ID、OD 和 QTY,因此對(duì)于此示例:IDarray = [20, 10, 40, etc...]ODarray = [30, 15, 52, etc...]QTYarray = [6, 3, 15, etc...]我有一個(gè)循環(huán)遍歷表格并在構(gòu)建這些數(shù)組時(shí)忽略任何空白輸入。所有這些都工作正常,但我希望能夠根據(jù)外徑 (OD) 從最大到最小對(duì)它們進(jìn)行排序??雌饋?lái)最好的方法是將 3 個(gè)并行數(shù)組組合成一個(gè)包含所有三個(gè)元素的對(duì)象數(shù)組,但是當(dāng)輸入值可以不斷變化時(shí),我似乎無(wú)法找到構(gòu)建對(duì)象數(shù)組的指導(dǎo)不同的。我確信這是非?;镜?,但我是 javascript 編碼的新手,所以我正在努力解決這個(gè)問(wèn)題。我附上了我的代碼片段,但我將其減少到 3 個(gè)輸入以節(jié)省空間。<script>window.onload = function() {$("#unit1").val(default_unit);$("#unit2").val(default_unit);$("#unit3").val(default_unit);function myFunction() {var unit1 = document.getElementById("unit1").value;var unit2 = document.getElementById("unit2").value;var unit3 = document.getElementById("unit3").value;var id1 = (unit1 == 1) ? document.getElementById("id1").value:document.getElementById("id1").value / 25.4;var id2 = (unit2 == 1) ? document.getElementById("id2").value:document.getElementById("id2").value / 25.4;var id3 = (unit3 == 1) ? document.getElementById("id3").value:document.getElementById("id3").value / 25.4;var od1 = (unit1 == 1) ? document.getElementById("od1").value:document.getElementById("od1").value / 25.4;var od2 = (unit2 == 1) ? document.getElementById("od2").value:document.getElementById("od2").value / 25.4;var od3 = (unit3 == 1) ? document.getElementById("od3").value:document.getElementById("od3").value / 25.4;var qty1 = document.getElementById("qty1").value;var qty2 = document.getElementById("qty2").value;var qty3 = document.getElementById("qty3").value;Array.prototype.clean = function(deleteValue) {    for (var i = 0; i < this.length; i++) {        if (this[i] == deleteValue) {                     this.splice(i, 1);            i--;        }    }    return this;};var id_values = [id1, id2, id3].clean("");var od_values = [od1, od2, od3].clean("");var qty_values = [qty1, qty2, qty3].clean("");               alert(id_values);alert(od_values);alert(qty_values);}</script>
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

據(jù)我了解,您最終得到了三個(gè)數(shù)組。這些數(shù)組將具有一致的長(zhǎng)度,索引表示它們?cè)诒碇械哪囊恍?。您想要的是根?jù)一個(gè)的值對(duì)所有三個(gè)數(shù)組的索引進(jìn)行排序。這意味著您需要確保每當(dāng)移動(dòng)一個(gè)數(shù)組中的值時(shí),所有其他數(shù)組的值都會(huì)從相同的位置移動(dòng)。


不幸的是,我知道本機(jī)函數(shù)無(wú)法做到這一點(diǎn)。您必須自己實(shí)現(xiàn)排序才能以這種方式管理它。


在前端,最好將關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)化為對(duì)象數(shù)組,而不是一組關(guān)聯(lián)的表狀數(shù)組。這樣,您可以更直觀地執(zhí)行排序、搜索、過(guò)濾等。讓我們來(lái)看看如何做到這一點(diǎn)。


我將使用您的測(cè)試對(duì)象:


var testObject = {

  id_values: [20, 10, 40],

  od_values: [30, 15, 2],

  qty_values: [6, 3, 15]

};

要將關(guān)聯(lián)數(shù)組轉(zhuǎn)換為包含關(guān)聯(lián)數(shù)據(jù)的對(duì)象數(shù)組,我將實(shí)例化一個(gè)具有與表相同數(shù)量索引的零填充數(shù)組。然后,我們映射這個(gè)空白數(shù)組,從每個(gè)表中的數(shù)據(jù)創(chuàng)建一個(gè)對(duì)象:


const dataArray = new Array(obj[by].length).fill(0).map((_, i) => {

  return {

    id_values: testObject.id_values[i],

    od_values: testObject.od_values[i],

    qty_values: testObject.qty_values[i]

  }

}) .sort((a, b) => a[by] > b[by])

此時(shí),表格將被轉(zhuǎn)換為對(duì) JavaScript 更友好的對(duì)象數(shù)組,如下所示:


const dataArray = [ 

  { id_values: 20, od_values: 30, qty_values: 6 },  

  { id_values: 10, od_values: 15, qty_values: 3 },  

  { id_values: 40, od_values: 2, qty_values: 15 } 

]

現(xiàn)在可以使用本機(jī)數(shù)組排序輕松排序:


dataArray.sort((a, b) => a.od_values > b.od_values)

這將導(dǎo)致它被排序!


const sortedData = [ 

  { id_values: 40, od_values: 2, qty_values: 15 },  

  { id_values: 10, od_values: 15, qty_values: 3 },  

  { id_values: 20, od_values: 30, qty_values: 6 } 

]

通過(guò)減少對(duì)象數(shù)組,可以將這些值解構(gòu)到它們的關(guān)聯(lián)表中:


dataArray.reduce((acc, el) => {

  Object.keys(el).map(col => {

    acc[col].push(el[col])

  })

  return acc

}, {

  id_values: [],

  od_values: [],

  qty_values: []

})

產(chǎn)生原始數(shù)據(jù)結(jié)構(gòu),但按所選屬性排序:


const sortedArrays = { 

  id_values: [ 40, 10, 20 ],  

  od_values: [ 2, 15, 30 ],  

  qty_values: [ 15, 3, 6 ] 

}

把它們放在一起:


var testObject = {

  id_values: [20, 10, 40],

  od_values: [30, 15, 2],

  qty_values: [6, 3, 15]

};


const sortTableObj = (obj, by) => {

  const dataArray = new Array(obj[by].length).fill(0).map((_, i) => {

    return {

      id_values: testObject.id_values[i],

      od_values: testObject.od_values[i],

      qty_values: testObject.qty_values[i]

    }

  }).sort((a, b) => a[by] > b[by])

  console.log('dataArray: ', dataArray) 


  return dataArray.reduce((acc, el) => {

    Object.keys(el).map(col => {

      acc[col].push(el[col])

    })

    return acc

  }, {

    id_values: [],

    od_values: [],

    qty_values: []

  })

}


sortTableObj(testObject, 'od_values')

如果您有任何問(wèn)題,請(qǐng)告訴我!


查看完整回答
反對(duì) 回復(fù) 2022-05-22
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)