Как перебирать объекты JSON, имеющие объекты и массивы внутри

#javascript #node.js #json #api

#javascript #node.js #json #API

Вопрос:

 let mything = {
  "holders": [{
    "address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
    "balance": 8.623839536582375e24,
    "share": 52.02
  }, {
    "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
    "balance": 4.5e24,
    "share": 27.14
  }]
};

let m = Object.entries(mything);
console.log(m); 

Выше приведены данные json, хранящиеся в файле, теперь я хочу сделать цикл по всему этому файлу, который содержит 2000 таких записей, получить только адресную часть каждой записи и добавить ее в URL, так как же мне выполнить часть цикла??
Любой фрагмент кода для JavaScript был бы прекрасен.
Cudos.

Комментарии:

1. Пожалуйста, добавьте код, который вы также пробовали, и вашу конкретную задачу с ним

2. Спасибо, Марк, за обращение, моя задача — получить значение адреса и в дальнейшем использовать его, и я пытаюсь использовать что-то вроде метода Object.entries(), и после этого я действительно не знаю, что делать.

Ответ №1:

Вы можете использовать функцию map для получения однострочной строки :

 const data = {"holders": [{
  "address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
  "balance": 8.623839536582375e24,
  "share": 52.02
},{
  "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
  "balance": 4.5e24,
  "share": 27.14
}]};

const url = "https://my.url/";
const urls = data.holders.map(holder => `${url}${holder.address}`);

console.log(urls); 

Ответ №2:

Поскольку holders объект представляет собой массив, вы можете перебирать его, как показано ниже, и использовать адрес, например, для построения URL-адреса в соответствии с вашей логикой внутри цикла. Вот пример хранения адресов в массиве:

 var original = {
  "holders": [{
    "address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
    "balance": 8.623839536582375e24,
    "share": 52.02
  }, {
    "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
    "balance": 4.5e24,
    "share": 27.14
  }]
};

var addresses = [];
for (let holder of original.holders) {
  addresses.push(holder.address);
}
console.log(addresses) 

Ответ №3:

 const data = {"holders": [{
  "address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
  "balance": 8.623839536582375e24,
  "share": 52.02
},{
  "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
  "balance": 4.5e24,
  "share": 27.14
}]};

for(const obj of Object.values(data)) {
    for(const arr of obj) {
        // Your code
    }
}
 

Ответ №4:

Используйте Array.prototype.map .

 const holders = [{
    "address": "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
    "balance": 8.623839536582375e24,
    "share": 52.02
}, {
    "address": "0xf977814e90da44bfa03b6295a0616a897441acec",
    "balance": 4.5e24,
    "share": 27.14
}];

const addresses = holders.map((holder) => holder.address);

console.log(addresses);