Вернуть полный JSON объект в Javascript из служебного файла - PullRequest
0 голосов
/ 25 марта 2020

У меня есть служебный файл, который правильно возвращает данные в следующем формате

{"0":{"BUTTER": "PEANUT","TYPE":"ORGANIC"},
"1":{"BUTTER":"PEANUT","TYPE":"SPREAD"},
"2":{"BUTTER":"ALMOND","TYPE":"ORGANIC"}}

Я пытаюсь собрать пару ключ / значение в другой файл JavaScript через функцию, но у меня немного неприятностей

Этот код возвращает только значение ключа масла:

butterList = Object.keys(butter).map(function(x) {return butter[x];});

Возвращает обратно

"PEANUT","PEANUT","ALMOND"

Но как я могу передать весь ключ / значение как

{"BUTTER:PEANUT,TYPE:ORGANIC}, {BUTTER:PEANUT,TYPE:SPREAD}, {BUTTER:ALMOND,TYPE:ORGANIC"}

Ответы [ 3 ]

0 голосов
/ 25 марта 2020

Это то, что вы ищете? -> {"0": "PEANUT", "1": "PEANUT", "2": "ALMOND"}

const butter = { "0": { "BUTTER": "PEANUT", "TYPE": "ORGANIC" }
               , "1": { "BUTTER": "PEANUT", "TYPE": "SPREAD"  }
               , "2": { "BUTTER": "ALMOND", "TYPE": "ORGANIC" }
               };

butterList = Object
              .keys(butter)
              .reduce((a,c)=>{a[c] = butter[c]['BUTTER']; return a},{})

document.write( JSON.stringify ( butterList ))
// {"0":"PEANUT","1":"PEANUT","2":"ALMOND"}

или это ?? >>

const butter = { "0": { "BUTTER": "PEANUT", "TYPE": "ORGANIC" }
               , "1": { "BUTTER": "PEANUT", "TYPE": "SPREAD"  }
               , "2": { "BUTTER": "ALMOND", "TYPE": "ORGANIC" }
               };
               
const butterList1 = Object.keys(butter)
                    .reduce((a,c,i,t)=>
                      {
                      let s = JSON.stringify(butter[c]).replace(/"/g,'')
                      if (i==0) s = `{"${s.substring(1)}`
                      if (i==(t.length-1)) s = `${s.substring(0,s.length-1)}"}`
                      a.push(s)
                      return a
                      },[])
                      .join(',');

document.write( butterList1 )

Но мне кажется, вам нужно только это:

const butterList = Object.values(butter)
0 голосов
/ 25 марта 2020

ОБНОВЛЕНИЕ: заменено следующей функцией

function items(butter) {
 var i, arr = [];
 for(i in butter) {
   arr.push(butter[i]);
 }
 return JSON.stringify(arr);
}

Взято из здесь

0 голосов
/ 25 марта 2020

Вы имеете в виду это?

butterList = Object.keys(butter).map(function(x) {return {butter[x]}});
...