1

ここで非常に初心者の質問ですが、私の愚かな頭脳をこれに巻き込むことはできません。

私は2つの配列を持っています:

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>

私はこのようなマージを試みました:

var merge = [];
merge.push(catUri, catKey);

どちらが返されますか:

[[Object { catKey="Test1"}, Object { catKey="Test2"}], [Object { catUri="//test.com//test1"}, Object { catUri="//test.com//test2"}]]

ここで迷子になり始めます (まだ迷子になっていない場合)... プッシュ オブジェクトから文字列を取得しようとすると、未定義のオブジェクトが取得され続けます。

$.each(merge, function(){
  var str = '<li><a href="' + this.catUri + '" title="' + this.catKey + '">' + this.catKey + '<\/a><\/li>';
  console.log(str);
});

どちらが返されますか:

<li><a href="undefined" title="undefined">undefined</a></li>
<li><a href="undefined" title="undefined">undefined</a></li>

プレーン オブジェクトをループすると、期待どおりの結果が返されます。

$.each(catKey, function(){
  var str = '<li>' + this.catKey + '</li>';
  console.log(str);
});

<li>test1</li>
<li>test2</li>

これらのオブジェクトを正しくマージしていない可能性があります。どんな助けでも大歓迎です。

4

3 に答える 3

0
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 の例: http://jsfiddle.net/7RXjw/

于 2012-06-16T14:23:04.623 に答える
0

したがって、あなたの例から、と はインデックスによって関連付けられている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'}]

http://jsfiddle.net/HackedByChinese/vm69c/

于 2012-06-16T14:26:01.660 に答える
0

これらの配列をマージする必要があるのはなぜですか? 単純な個別の反復はどうですか?

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");
}

デモ: http://jsfiddle.net/Yya2m/

于 2012-06-16T14:26:33.967 に答える