1

私は次のような2つの配列を持っています:

var arrayOne = [
    {page:'1',tags:['foo','bar']},
    {page:'2',tags:['oh','boy']}
];
var arrayTwo = [
    {page:'1',tags:['go','out']},
    {page:'9b',tags:['red','blue','green']}
];

2 つの配列を比較したいのですが、プロパティが同じ場合は、 inのプロパティを fromのプロパティにpage置き換えます。tagsarrayOnetagsarrayTwo

したがって、上記の配列の例では、page: 1ofのタグのみがfrom の値arrayOneに置き換えられます。page: 1arrayTwo

でこれを行うことができると考えていますがunderscore.js、方法を確認するのに苦労しています。

アイデア?

4

3 に答える 3

0

_eachアンダースコアを使用して、次のように1つを別の内部で実行することにより、必要なことを実行できました( http://jsfiddle.net/4JP7g/):

var arrayOne = [
    {page:1,tags:["foo","bar"]},
    {page:2,tags:["oh","boy"]}
];
var arrayTwo = [
    {page:1,tags:["go","out"]},
    {page:9,tags:["red","blue","green"]}
];

_.each(arrayOne, function(one){
    _.each(arrayTwo, function(two){
      if(one.page === two.page){
                one.tags = two.tags;  
                console.log (one.tags);            
      }           
    });
});​
于 2012-10-23T17:25:31.920 に答える
0

お気に入り

var arrayOne = [
    '{"page":"1","tags":["foo","bar"]}',
    '{"page":"2","tags":["oh","boy"]}'
];
var arrayTwo = [
    '{"page":"1","tags":["go","out"]}',
    '{"page":"9b","tags":["red","blue","green"]}'
];

var maxLen = Math.max( arrayOne.length, arrayTwo.length ),
    objA, objB;

while( maxLen-- ) {
    objA = JSON.parse( arrayOne[ maxLen ] );
    objB = JSON.parse( arrayTwo[ maxLen ] );

    if( objA.page === objB.page ) {
        objA.tags = objB.tags
        arrayOne[ maxLen ] = JSON.stringify( objA );
    }
}

これはほぼ完璧な世界の例です。Array 1 と 2 に同じ数のアイテムが含まれていない場合、少し扱いが難しくなります。

于 2012-10-23T15:04:17.727 に答える