Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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_Jquery - Fatal编程技术网

Javascript 构建具有两个键/值对的对象数组

Javascript 构建具有两个键/值对的对象数组,javascript,jquery,Javascript,Jquery,我必须构建这样的阵列: [{'test1': 't1', 'test2' :'t2'}, {'test3' :'t3', 'test4': 't4' }, {'test5': 't5', 'test6' :'t6'}, {'test7' :'t7' , 'test8': 't7' }] 它将是一个对象数组 对象将始终具有两个键/值对。 键和值将是动态的 我必须循环通过下面的对象来构建阵列: 最后,我必须用数组构建一个表,如下所示: 它必须是一个包含键和值的2列表 HTML:

我必须构建这样的阵列:

[{'test1': 't1',  'test2' :'t2'},  
 {'test3' :'t3', 'test4': 't4' },
 {'test5': 't5',  'test6' :'t6'},
 {'test7' :'t7' , 'test8': 't7' }]
它将是一个对象数组

对象将始终具有两个键/值对。 键和值将是动态的

我必须循环通过下面的对象来构建阵列:

最后,我必须用数组构建一个表,如下所示:

它必须是一个包含键和值的2列表

HTML:


测试1
t1
测试2
t2
测试3
t3
测试4
t4
测试5
t5
测试6
t6
测试7
t7
测试8
t7

你知道怎么做吗?

多么疯狂的要求。我喜欢。这是我的看法。(没有测试)


下面是我创建该表的方法:

var testObject={
一些关键点:{
键1:'1',
键2:'2',
键3:'3',
}
};
var元素=[];
var last=null;
//在相关对象中的关键点上循环
$.each(testObject.some_键,函数(键,值){
变量项=“”+键+“”+值+“”;
如果(!last){//如果没有最后一项,则将此行设置为last not add to the array of elements,我们首先需要其他两列
最后一项=项目;
}否则{
//如果我们已经有了一个last,那么将这两列添加到它,然后将它添加到元素数组中
元素。推送(最后一个+项目);
last=null;
}
});
如果(最后){
//最后,如果仍然有一个“last”挂起,则添加两个空列
var项目=“”;
元素。推送(最后一个+项目);
}
//使用tr连接环绕每组4列的数组
变量行=''+元素。连接('')+'';
$('.detailList tbody').html(行)


键名和值来自何处?您通常使用相同的键,只是使用不同的对象。我已更新了问题。键/值来自对象。我循环通过它来构建数组。这里我主要关心的是如何将数组中每个对象的键/值对限制为两个。请帮助。好的,那么实际的需求是将一个具有多个属性的对象作为输入,并在一个每行有两个键/值对的HTML表中显示这些属性吗?是否需要有您最初询问的两个属性对象的数组,或者这正是您认为获得最终输出HTML所需的吗?Bruh,只要遍历键并在列数为4时生成新行即可。这样,您就不会操纵实际的数据。这是一个疯狂的需求,因为OP几乎肯定以错误的方式使用对象和数组。这是我们真正需要解决的问题,我同意。什么样的设计需要一个关键限制为两个的对象数组。如果有这样的设计需要这样做,它需要重新设计。谢谢。得到了我想要的数组。@N.B.棘手的一点是在元素上循环,以便在结果表的每一行上使用两个单独的键和值。;)是 啊谢谢你的帮助。我会试试的。谢谢,试过了。很好!谢谢@bleeted0d。也谢谢你,维克。@维克,跟我说话吗?@N.B.我想维克只是厚颜无耻,他说“好吧,当然,如果你想解决真正的问题”;)
<table class="detailList" >
    <tbody>
        <tr></tr>
        <tr>
            <th class="labelCol" scope="row"> <label>test1</label> </th>
            <td class="dataCol"> t1</td>
            <th class="labelCol" scope="row"> <label>test2</label> </th>
            <td class="dataCol"> t2</td>
        </tr>
        <tr>
            <th class="labelCol" scope="row"> <label>test3</label> </th>
            <td class="dataCol"> t3</td>
            <th class="labelCol" scope="row"> <label>test4</label> </th>
            <td class="dataCol"> t4</td>
        </tr>
        <tr>
            <th class="labelCol" scope="row"> <label>test5</label> </th>
            <td class="dataCol"> t5</td>
            <th class="labelCol" scope="row"> <label>test6</label> </th>
            <td class="dataCol"> t6</td>
        </tr>
        <tr>
            <th class="labelCol" scope="row"> <label>test7</label> </th>
            <td class="dataCol"> t7</td>
            <th class="labelCol" scope="row"> <label>test8</label> </th>
            <td class="dataCol"> t7</td>
        </tr>
    </tbody>
</table>
var twoPairArray = []; //array to be returned
var twoPairObj = {}; //temp obj for manipulation
for(var key in targetObj) //target obj has the keys to be processed
{
    if(Object.keys(twoPairObj).length == 2) //does temp obj have enough keys?
    {
        twoPairArray.push(JSON.parse(JSON.stringify(twoPairObj))); //sloppy clone of temp obj
        twoPairObj = {}; //reset the temp obj.
    }
    twoPairObj[key] = targetObj[key]; //temp obj being manipulated into this craziness
}