【问题标题】:Map the Json Array values映射 Json 数组值
【发布时间】:2025-11-23 07:50:02
【问题描述】:

试图映射两个数组值。一个数组值来自本地 Json 文件,其他数组值来自服务或后端。

本地 JSON:

var localJsonArray = {
    "records": {
        "cat1": [{
            "id": 1234,
                "label": "a"
        }, {
            "id": 2345,
                "label": "b"

        }],
            "cat2": {

            "id": 12345,
                "label": "c"
        }
    }
}

后端数组值:

我将来自后端的值存储为:

var backendArray =[0: "1234", 1: "3456", 2:"4567"];

JS:

$.each( localJsonArray, function( key, value ) {
                var index = $.inArray( value, backendArray );
                if( index != -1 ) {
                    console.log( index );
                }
            });

现在如何将本地 Json 的 id 映射到后端 JSON 的 id。如果值匹配,则循环应该中断,否则它应该寻找值。

【问题讨论】:

  • 后端数组值在哪里?
  • @PabloWeb18 :我已经更新了值
  • 你不能创建这样的数组 >>> 'var backendArray =[0: "1234", 1: "3456", 2:"4567"]';
  • 但我会创建答案... ;) ... 等一下

标签: javascript arrays json loops


【解决方案1】:

你不能创建像var backendArray =[0: "1234", 1: "3456", 2:"4567"];这样的数组

顺便说一句……按照上面的代码:

var localJsonArray = {
    "records": {
        "cat1": [{
            "id": 1234,
                "label": "a"
        }, {
            "id": 2345,
                "label": "b"

        }],
            "cat2": {

            "id": 12345,
                "label": "c"
        }
    }
};
var backendArray =["1234", "3456", "4567"];

$.each( localJsonArray['records'], function( a,b,c ) {
    if(!(b.length == undefined)){
        for(var i = 0;i < b.length; i++)
        {
            var index = $.inArray( b[i].id.toString(), backendArray );
            if( index != -1 ) {
                console.log( index );
            }
        }
    }
    else{
        var index = $.inArray( b.id.toString(), backendArray );
        if( index != -1 ) {
            console.log( index );
        }
    }
});

希望有帮助!!! :)

【讨论】: