簡體   English   中英

如何使用 javascript for 循環創建新數組。 我收到錯誤“圓形對象對象”

[英]How do I create a new array with a javascript for loop. I got the error "circular object Object"

我需要通過用ajax划分返回的數組來創建一個新數組。 我將復制具有與此數組數量一樣多的 offerCurrencyTypeExchanges 值的對象,並將代碼和費率值寫入“標簽”值。 但我想我在循環中創建了一個錯誤。 將最后一個值復制到所有。

結果在 jsfiddle https://jsfiddle.net/xd68no54/ 中看起來更好

var res = [{
    id: 3,
    name: "Türk Lirası",
    code: "TRY",
    offerCurrencyTypeExchanges: [],
    label: "Türk Lirası (TRY)"
  },
  {
    id: 4,
    name: "USD",
    code: "USD",
    offerCurrencyTypeExchanges: [{
        exchangeRateId: 33642,
        localize: "Alış",
        value: 9.2857,
        valueSection: 1
      },
      {
        exchangeRateId: 33642,
        localize: "Satış",
        value: 9.3024,
        valueSection: 2
      },
      {
        exchangeRateId: 33642,
        localize: "Efektif alış",
        value: 9.2792,
        valueSection: 3
      },
      {
        exchangeRateId: 33642,
        localize: "Efektif satış",
        value: 9.3164,
        valueSection: 4
      }
    ]
  },
  {
    id: 5,
    name: "EUR",
    code: "EUR",
    offerCurrencyTypeExchanges: [{
        exchangeRateId: 33643,
        localize: "Alış",
        value: 10.8108,
        valueSection: 1
      },
      {
        exchangeRateId: 33643,
        localize: "Satış",
        value: 10.8303,
        valueSection: 2
      },
      {
        exchangeRateId: 33643,
        localize: "Efektif alış",
        value: 10.8033,
        valueSection: 3
      },
      {
        exchangeRateId: 33643,
        localize: "Efektif satış",
        value: 10.8465,
        valueSection: 4
      }
    ]
  },
  {
    id: 6,
    name: "TRY",
    code: "TRY",
    offerCurrencyTypeExchanges: [],
    label: "TRY (TRY)"
  }
]


var resultAutoComplete = [];
var arrInObj = {};
for (var i = 0; i < res.length; i++) {
  if (res[i].offerCurrencyTypeExchanges.length == 0) {
    arrInObj = {
      code: res[i].code,
      id: res[i].id,
      name: res[i].name,
      label: res[i].label = res[i].name + " " + "(" + res[i].code + ")"
    }
    resultAutoComplete.push(arrInObj)

  } else {
    arrInObj = {
      code: res[i].code,
      id: res[i].id,
      name: res[i].name,
    }
    for (var j = 0; j < res[i].offerCurrencyTypeExchanges.length; j++) {
      arrInObj.label = res[i].code + " - " + res[i].offerCurrencyTypeExchanges[j].localize + "(" + res[i].offerCurrencyTypeExchanges[j].value + ")";
      arrInObj.exchangeRateId = res[i].offerCurrencyTypeExchanges[j].exchangeRateId
      arrInObj.localize = res[i].offerCurrencyTypeExchanges[j].localize
      arrInObj.value = res[i].offerCurrencyTypeExchanges[j].value
      arrInObj.valueSection = res[i].offerCurrencyTypeExchanges[j].valueSection
      resultAutoComplete.push(arrInObj)
    }
  }
  console.log(resultAutoComplete)
}

Süleyman TAŞÇI,您能否舉例說明您希望看到的結果? 我認為這可能會澄清你在問什么。 我很樂意嘗試並提供幫助!

我不是很明白你想做什么,但你可以提取你的對象並用它們做你想做的事情。

const currencyExchangeTypes = res.map((c) => c.offerCurrencyTypeExchanges).reduce((a, b) => a.concat(b), []);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM