javascript - 如何将数据提取到 JavaScript 中的对象中?

标签 javascript html

我有一个具有以下结构的 HTML 代码:

<div class="betting-table">
    <div class="header">
        <div class="header-col">
            <div class="header-title">SOME TITLE</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME</div>
           <div class="name bottom">SOME NAME</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME</div>
           <div class="name bottom">SOME NAME</div>
        </div>
    </div>
</div>

<div class="betting-table">
    <div class="header">
        <div class="header-col">
            <div class="header-title">SOME TITLE</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME</div>
           <div class="name bottom">SOME NAME</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME</div>
           <div class="name bottom">SOME NAME</div>
        </div>
    </div>
</div>

我需要得到的是一个这样格式的对象:

{
  title : header-title,
  name : name-top
}

我目前能够使用以下方法获取名称:

function getMatches(){
    var divs = document.getElementsByClassName('name');
    var arr = Array.from(divs).map(m => {
      let name = m.querySelector('.name.top').innerText;
      return {name : name}
    });
    console.log(arr);
}

但是我不知道如何为每个项目映射标题,因此前两个项目将具有第一个标题,第三个和第四个项目将具有第二个标题。

在我描述的数据模型中获取数据的最佳方法是什么?

最佳答案

您可以遍历所有项目,然后使用 parentElement 访问 header

const array = [...document.getElementsByClassName('item')].map(i => {
  const title = i.parentElement.querySelector('.header-title').innerHTML;
  const name = i.querySelector('.name.top').innerHTML;
  return {title, name};
});

console.log(array);
<div class="betting-table">
    <div class="header">
        <div class="header-col">
            <div class="header-title">SOME TITLE 1</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME 1</div>
           <div class="name bottom">SOME NAME 1</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME 2</div>
           <div class="name bottom">SOME NAME 2</div>
        </div>
    </div>
</div>

<div class="betting-table">
    <div class="header">
        <div class="header-col">
            <div class="header-title">SOME TITLE 2</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME 3</div>
           <div class="name bottom">SOME NAME 3</div>
        </div>
    </div>

    <div class="item">
        <div class="name">
            <div class="name top">SOME NAME 4</div>
           <div class="name bottom">SOME NAME 4</div>
        </div>
    </div>
</div>

关于javascript - 如何将数据提取到 JavaScript 中的对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893510/

相关文章:

javascript - 嵌套类的 Json 对象

Jquery 如果 css 值不起作用

php - 斜线附加到我的所有帖子中

javascript - TypeScript:那么 "this"的范围到底是多少?

javascript - 异步 Mocha 测试如何在不返回 promise 或调用完成回调的情况下解决

javascript - 如何使用纯 javascript 查找单选按钮的值?

javascript - 如何选择任何数量并更改其值?

php - MySQL INSERT 未使用 PHP 插入预期值

javascript - 避免多次使用相同的表头,当它使用 jQuery 动态给出时

javascript - 函数不返回值