繁体   English   中英

使用javascript比较和排序数组

[英]Compare and sort array using javascript

对于以下

array1 = [{
        "x": 0,
        "y": 1,
        "z": 1,
        "i": "chart1"
         }, {
        "x": 0,
        "y": 2,
        "z": 1,
        "i": "chart2"
         }, {
        "x": 1,
        "y": 1,
        "z": 1,
        "i": "chart3 "
    }
]

array2 = [{
        "x": 1,
        "y": 1,
        "z": 1,
        "i": "chart1"
        }, {
        "x": 0,
        "y": 1,
        "z": 1,
        "i": "chart2"
        }, {
        "x": 0,
        "y": 2,
        "z": 1,
        "i": "chart3"
    }
]

比较array1array2 xy ,如果相等,则找到位置并返回 i 值的数组集合。

即在上述情况下它应该返回:

array3=["chart2","chart3","chart1"]

我有一个 json 如下:

json = [{
        "visType:" bar "," visName ":" chart1 "},{" visType: "bar",
        "visName": "chart2"
    }, {
        "visType:" Pie "," visName ":" chart3 "}]

这需要根据array3 = ["chart2","chart3","chart1"]进行排序,输出应该与更新的 json 一样

updatedjson = [{
        "visType:" bar "," visName ":" chart2 "},{" visType: "Pie",
        "visName": "chart3"
    }, {
        "visType:" bar "," visName ":" chart1 "}]

我需要使用lodashjavascript的解决方案。

const array3 = [...array1, ...array2].filter(({x,y}) => x===y);
const updatedjson = array3.map(({i}) => json.find(({visName}) => i === visName));

编辑:修复了充满语法错误的输入数据:

var array1 = [{ "x": 0, "y": 1, "z": 1, "i": "chart1" }, { "x": 0, "y": 2, "z": 1, "i": "chart2" }, { "x": 1, "y": 1, "z": 1, "i": "chart3" }];
var array2 = [{ "x": 1, "y": 1, "z": 1, "i": "chart1" }, { "x": 0, "y": 1, "z": 1, "i": "chart2" }, { "x": 0, "y": 2, "z": 1, "i": "chart3" }];

var json = [
    { "visType": "bar", "visName": "chart1" },
    { "visType": "bar", "visName": "chart2" },
    { "visType": "Pie", "visName": "chart3" }
];

const array3 = [...array1, ...array2].filter(({ x, y }) => x === y);
const updatedjson = array3.map(({ i }) => json.find(({ visName }) => i === visName));
console.log(array3);
console.log(updatedjson);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM