Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环并向值添加键值_Javascript_Node.js_Json_Cheerio - Fatal编程技术网

Javascript 如何循环并向值添加键值

Javascript 如何循环并向值添加键值,javascript,node.js,json,cheerio,Javascript,Node.js,Json,Cheerio,我希望能够循环遍历这个对象,并将“键”值添加到这些值中,以便可以轻松地用于项目。我从一个网站上获取数据,我已经能够获取数据,但我需要格式化它,这是我的代码,我被困在下一步是什么 我想让它看起来像这样 示例 服务器:“USSouth2” 费用:100 多少钱:56 时间:28 代码 JSON对象(这可能会根据网站数据而改变) 我犯了这个错误 TypeError:servers.forEach不是函数我更新了代码段。请现在检查 let servers=[“USSouth2 Nexus”,100

我希望能够循环遍历这个对象,并将“键”值添加到这些值中,以便可以轻松地用于项目。我从一个网站上获取数据,我已经能够获取数据,但我需要格式化它,这是我的代码,我被困在下一步是什么

我想让它看起来像这样

示例

  • 服务器:“USSouth2”

  • 费用:100

  • 多少钱:56

  • 时间:28

代码

JSON对象(这可能会根据网站数据而改变)

我犯了这个错误
TypeError:servers.forEach不是函数

我更新了代码段。请现在检查

let servers=[“USSouth2 Nexus”,100,56,28],“东南欧Nexus”,100,62,25],“亚洲东南欧Nexus”,100,58,25],“东北欧Nexus”,100,64,24],“东南欧Nexus”,100,55,24],“美国西部2 Nexus”,100,73,23],“美国中西部2 Nexus”,100,53,21],“USEast2 Nexus”,100,98,17],“西南欧Nexus”,100,66,11],“西南欧Nexus”,100,86,10],“美国西北欧西欧Nexus”,100,87,9],[“美国西南部连接”,100,67,9],“美国西南部连接”,100,89,8],“美国西部连接”,100,66,8],“美国西南部连接”,100,54,7],“美国中西部连接”,100,90,6],“美国西南部连接”,100,82,6],“美国东南部连接”,100,65,1];
var结果=[];
servers.forEach(函数(nexus){
结果:推({
服务器名:nexus[0],
成本:nexus[1],
多少钱:nexus[2],
时间:nexus[3]
});
});
控制台日志(结果);

我已经修复了它,我忘记了解析JSON,这里是通过创建新变量的答案


让jsonData=JSON.parse(服务器);

好的,如果您确定四个键不会改变,那么就这样做

创建一个数组,按单个JSON数组值的外观顺序使用四个键。使用数组的方法在数组上循环,并操作每个值和方法将数组转换为对象

查看下面的示例以了解它的功能

//您的JSON。
const json=[“USSouth2-Nexus”,100,56,28],“EUSouth-Nexus”,100,62,25];
//对象的四个键。按JSON数组的顺序排列。
const key=['servername','cost','howmount','time'];
//在服务器上循环并从阵列返回一个对象。
const servers=json.map(服务器=>
服务器减少((acc、cur、i)=>{
设key=key[i];
acc[键]=电流;
返回acc;
}, {}));

console.log(servers);
首先,您需要检查服务器是否存在,以及它是否以数组形式存在,如果是这样,则通过服务器循环获取数据

const servers = $('.cheapest-server').attr('data-alternatives');

if (servers && Array.isArray(servers) && servers.length) {
  const result = [];
  for (let i = 0; i < servers.lenght; i += 1) {
    const entity = servers[i];
    const objBuilder = {
      servername: entity[0] || null,
      cost: entity[1] || null,
      howmuch: entity[2] || null,
      time: entity[3] || null,
    };  
    result.push(objBuilder);
  }
} else {
  // Error handling or pass an empty array
}

const servers=$('.cheapest server').attr('data-alternations');
if(servers&&Array.isArray(servers)&&servers.length){
常量结果=[];
对于(设i=0;i
抱歉,我认为我把帖子弄得有点不清楚,我现在已经更新了。这确实不是OP问题的答案。OP试图从解析的HTML中获取一些数据,然后迭代该HTML中的项目列表。他之前提到了一些其他内容,基于此,我提供了解决方案。现在他改变了他的问题,你可以从他的评论中看到"。所以没有必要投反对票。问一下我自己的答案,这已经足够接近了。
nexus
从哪里来?你能展示一下你试图从中获取
服务器列表的相关HTML吗?我们需要看到这一点,以便我们能够正确地建议如何使用cheerio来获得它。可能只是你得到了一个字符串,您需要将其解析为数组,或者可能您没有正确使用cheerio。我们需要查看您试图从中获取数据的实际HTML,以便了解。@EmielZuurbier-它应该来自HTML(但无法正常工作)。请参阅
服务器中的
nexus
。forEach(函数(nexus)){
您好,请看我的答案。很好,但您仍然需要首先检查数组长度
["USSouth2 Nexus",100,56,28],["EUSouth Nexus",100,62,25],["AsiaSouthEast Nexus",100,58,25],["EUNorth2 Nexus",100,64,24],["EUEast Nexus",100,55,24],["USWest2 Nexus",100,73,23],["USMidWest2 Nexus",100,53,21],["USEast2 Nexus",100,98,17],["EUWest Nexus",100,66,11],["EUSouthWest Nexus",100,86,10],["USNorthWest Nexus",100,87,9],["USSouthWest Nexus",100,67,9],["EUWest2 Nexus",100,89,8],["USWest Nexus",100,66,8],["USSouth Nexus",100,54,7],["USMidWest Nexus",100,90,6],["USSouth3 Nexus",100,82,6],["USEast Nexus",100,65,1]]
const servers = $('.cheapest-server').attr('data-alternatives');

if (servers && Array.isArray(servers) && servers.length) {
  const result = [];
  for (let i = 0; i < servers.lenght; i += 1) {
    const entity = servers[i];
    const objBuilder = {
      servername: entity[0] || null,
      cost: entity[1] || null,
      howmuch: entity[2] || null,
      time: entity[3] || null,
    };  
    result.push(objBuilder);
  }
} else {
  // Error handling or pass an empty array
}