数组:将多个对象放在数组

时间:2016-09-28 08:14:03

标签: javascript arrays

我的功能如下



    var resultObject = {
        testResult: $('.test').map(function() {
            return {name: $(this).text(), no:'1'};
        }).get()
    };
    
    console.log(resultObject);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="test">test1</div>
<div class="test">test2</div>
<div class="test">test3</div>

<div class="test2">1</div>
<div class="test2">2</div>
<div class="test2">3</div>http://stackoverflow.com/questions/ask#
&#13;
&#13;
&#13;

该字段&#34; no&#34;应该根据class="test2",但它似乎不能像.map()中的.map()那样做

大更新!!

我看到下面有这么多答案,大多数都可以解决问题,我也找到了解决问题的方法。

请让我分享一下,看看还有什么我会改进的。

var test1= "";  

$(".test" ).each(function( index ) {
    test1 = $(this).text();
});

var test2=  $('.test2').map(function() {
        return {name: $(this).text(), no:test1};
}).get()

var sovCategories = test2;      

2 个答案:

答案 0 :(得分:1)

您不需要第二个循环。您可以使用.eq()按相同索引选择元素。

var resultObject = {
    testResult: $('.test').map(function(i) {
        return {
            name: $(this).text(), 
            no: $('.test2').eq(i).text(), 
        };
    }).get()
};

console.log(resultObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="test">test1</div>
<div class="test">test2</div>
<div class="test">test3</div>

<div class="test2">1</div>
<div class="test2">2</div>
<div class="test2">3</div>

只是因为我玩得开心,箭头功能也有点短版! ;)

var resultObject = {
    testResult: $('.test').map((i, e) => ({
        name: $(e).text(), 
        no: $('.test2').eq(i).text()
    })).get()
};

console.log(resultObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="test">test1</div>
<div class="test">test2</div>
<div class="test">test3</div>

<div class="test2">1</div>
<div class="test2">2</div>
<div class="test2">3</div>

答案 1 :(得分:1)

您可以使用下面的迭代次数来查找div,但这可能不是最好的事情。请参见下面的摘录..

var resultObject = {
        testResult: $('.test').map(function(i) {
            return {name: $(this).text(), no: $('.test2').eq(i).text()};
        }).get()
    };
    
    console.log(resultObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="test">test1</div>
<div class="test">test2</div>
<div class="test">test3</div>

<div class="test2">1</div>
<div class="test2">2</div>
<div class="test2">3</div>http://stackoverflow.com/questions/ask#

不要执行上述操作,而是更好地更改html并使用data-attributes

<div class="test" data-no="1">test1</div>
<div class="test" data-no="2">test2</div>
<div class="test" data-no="3">test3</div>

这样做,您将能够更轻松地提取数据:

var resultObject = {
            testResult: $('.test').map(function(i) {
                return {name: $(this).text(), no: $(this).data("no")};
            }).get()
        };
        
        console.log(resultObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    <div class="test" data-no="1">test1</div>
    <div class="test" data-no="2">test2</div>
    <div class="test" data-no="3">test3</div>

    <div class="test2">1</div>
    <div class="test2">2</div>
    <div class="test2">3</div>http://stackoverflow.com/questions/ask#