我想将货币数据转换为新数组以用于我的货币转换。但我需要一种不同的阵列。 我想创建一个如下所示的数组:
json文件中的数组如下所示:
{
"eur":{
"code":"EUR",
"alphaCode":"EUR",
"numericCode":"978",
"name":"Euro",
"rate":0.83563518721183,
"date":"Mon, 7 May 2018 00:00:01 GMT"
},
"gbp":{
"code":"GBP",
"alphaCode":"GBP",
"numericCode":"826",
"name":"U.K. Pound Sterling",
"rate":0.73757713865121,
"date":"Mon, 7 May 2018 00:00:01 GMT"
},
etc...
}
我想让它看起来像:
{
rates: {
AED: 3.672538,
AFN: 66.809999,
ALL: 125.716501,
AMD: 484.902502,
ANG: 1.788575,
AOA: 135.295998,
ARS: 9.750101,
AUD: 1.390866,
/* ... */
}
}
我使用的代码:
$.getJSON(
'http://www.floatrates.com/daily/usd.json',
function (data) {
var newRates = [];
Object.getOwnPropertyNames(data).forEach(
function (val, idx, array) {
var newObj = Object.assign(
{ val },
{ '': data[val].rate });
newRates.push(newObj);
}
);
console.log(newRates);
)
答案 0 :(得分:1)
从我看到的情况来看,只需直接分配就可以获得你想要的东西,试试这个:
$.getJSON(
'http://www.floatrates.com/daily/usd.json',
function (data) {
var newRates = {'rates': []}; // <--
Object.getOwnPropertyNames(data).forEach(
function (val, idx, array) {
newRates['rates'][val] = data[val].rate;
}
);
console.log(newRates);
}
)
答案 1 :(得分:1)
您可以通过映射单个对象并将其分配给单个对象来构建对象。
$.getJSON(
'http://www.floatrates.com/daily/usd.json',
function(data) {
var result = Object.assign(
...Object
.entries(data)
.map(([key, { rate }]) => ({ [key.toUpperCase()]: rate }))
);
console.log(result);
}
);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:0)
我想创建一个看起来像这样的数组
正如Quentin所说,那不是一个数组,它是一个非数组对象。 (数组也是对象,因此&#34;非数组&#34;位。)
从您进入代码的结果中可以清楚地看出data
已经的格式是您所说的rates
格式;直接使用它:
var obj = {rates: data};
以下是证据:
console.log("Be sure to scroll down");
var data = {
AED: 3.672538,
AFN: 66.809999,
ALL: 125.716501,
AMD: 484.902502,
ANG: 1.788575,
AOA: 135.295998,
ARS: 9.750101,
AUD: 1.390866,
/* ... */
};
// Applying your code to it:
var newRates = [];
Object.getOwnPropertyNames(data).forEach(
function (val, idx, array) {
var newObj = Object.assign(
{ val },
{ '': data[val].rate });
newRates.push(newObj);
}
);
console.log(newRates);
// But instead, just use it directly
var newRates2 = {rates: data};
console.log(newRates2);
&#13;
.as-console-wrapper {
max-height: 100% !important;
}
&#13;