Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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,这是一个非常棘手的问题,但我无法用我愚蠢的头脑来思考这个问题 我有两个阵列: var catUri = [ { catUri : "//test.com//test1" }, { catUri : "//test.com//test2" } ]; var catKey = [ { catKey : "test1" }, { catKey : "test2" } ]; 我正在尝试加入数组,然后从每个对象获取字符串来创建html,就像这样 <h2>Test</h

这是一个非常棘手的问题,但我无法用我愚蠢的头脑来思考这个问题

我有两个阵列:

var catUri = [
  { catUri : "//test.com//test1" },
  { catUri : "//test.com//test2" }
];

var catKey = [
  { catKey : "test1" },
  { catKey : "test2" }
];
我正在尝试加入数组,然后从每个对象获取字符串来创建html,就像这样

<h2>Test</h2>
<ul>
  <li><a href="//test.com//test1" title="test1">test1</a></li>
  <li><a href="//test.com//test2" title="test2">test2</a></li>
</ul>
返回:

[[Object { catKey="Test1"}, Object { catKey="Test2"}], [Object { catUri="//test.com//test1"}, Object { catUri="//test.com//test2"}]]
<li><a href="undefined" title="undefined">undefined</a></li>
<li><a href="undefined" title="undefined">undefined</a></li>
这是我开始迷路的地方(如果我还没有迷路的话)。。。当我试图从push对象中获取字符串时,我总是获取一个未定义的对象

$.each(merge, function(){
  var str = '<li><a href="' + this.catUri + '" title="' + this.catKey + '">' + this.catKey + '<\/a><\/li>';
  console.log(str);
});
$。每个(合并,函数(){
var str='
  • 通过普通对象循环返回我的预期结果

    $.each(catKey, function(){
      var str = '<li>' + this.catKey + '</li>';
      console.log(str);
    });
    
    <li>test1</li>
    <li>test2</li>
    
    $。每个(catKey,function(){
    var str='
  • '+this.catKey+'
  • '; console.log(str); });
  • 测试1
  • 测试2
  • 我可能没有正确合并这些对象。非常感谢您的帮助

    var merge = [],
    i = 0;
    $.each(catUri,function(){
        merge.push({
            catUri: catUri[i].catUri,
            catKey: catKey[i].catKey
        });
        i++;
    });
    
    输出:

    [
        {
            catUri: "//test.com//test1",
            catKey: "test1"
        },
        {
            catUri: "//test.com//test2",
            catKey: "test2"
        }
    ]
    

    JSFiddle示例

    因此,根据您的示例,我推断
    catUri
    catKey
    通过索引关联,您希望将每个位置的元素从一个合并到另一个

    var merge = $.map(catUri, function(value, index) {
       return $.extend(value, catKey[index]);
    });
    
    那会给你

    [{catUri: '//test.com/test1', catKey: 'test1' }, {catUri: '//test.com/test2', catKey: 'test2'}]
    

    为什么需要合并这些数组?简单的单独迭代如何

    for (var i = 0; i < catUri.length; i++) {
        var uri = catUri[i].catUri;
        var key = catKey[i].catKey;
        $("<li />").append($("<a />").attr({
            title : key,
            href : uri
        }).text(key)).appendTo("ul");
    }
    
    for(变量i=0;i$(“
  • ”)追加($(“

    谢谢你的帮助愿景。应该早点在这里发布。我已经把这件事复杂化了好几个小时了……谢谢你的帮助标记。我一开始就有点太过分了,甚至不得不把它们分组。在经历了几个小时的痛苦之后,知道这件事是怎么做的还是件好事。很好,这是一种更简洁的方式……非常感谢。”。
    for (var i = 0; i < catUri.length; i++) {
        var uri = catUri[i].catUri;
        var key = catKey[i].catKey;
        $("<li />").append($("<a />").attr({
            title : key,
            href : uri
        }).text(key)).appendTo("ul");
    }