Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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_Arrays - Fatal编程技术网

Javascript数组将重复项提取到新数组中

Javascript数组将重复项提取到新数组中,javascript,arrays,Javascript,Arrays,我有以下数组: optionsList = [{"id":73,"option_id":19,"label":"1GB DDR2 RAM (default)","sort_order":0,"value":"1GB DDR2 RAM (default)"},{"id":74,"option_id":19,"label":"2GB DDR2 RAM (+ $15.00)","sort_order":1,"value":"2GB DDR2 RAM (+ $15.00)"},{"id":75,"opt

我有以下数组:

optionsList = [{"id":73,"option_id":19,"label":"1GB DDR2 RAM (default)","sort_order":0,"value":"1GB DDR2 RAM (default)"},{"id":74,"option_id":19,"label":"2GB DDR2 RAM (+ $15.00)","sort_order":1,"value":"2GB DDR2 RAM (+ $15.00)"},{"id":75,"option_id":20,"label":"No (Default)","sort_order":0,"value":"No (Default)"},{"id":76,"option_id":20,"label":"Yes (+$18)","sort_order":1,"value":"Yes (+$18)"},{"id":77,"option_id":21,"label":"19\" Monitor ","sort_order":0,"value":"19\" Monitor "},{"id":78,"option_id":21,"label":"20\" Monitor (+ $10.00)","sort_order":1,"value":"20\" Monitor (+ $10.00)"},{"id":79,"option_id":21,"label":"22\" Monitor (+ $20.00)","sort_order":2,"value":"22\" Monitor (+ $20.00)"},{"id":80,"option_id":22,"label":"Window XP Pro","sort_order":0,"value":"Window XP Pro"},{"id":81,"option_id":22,"label":"Windows Vista","sort_order":1,"value":"Windows Vista"},{"id":82,"option_id":22,"label":"Windows 7 Professional (+$55.00)","sort_order":2,"value":"Windows 7 Professional (+$55.00)"},{"id":83,"option_id":23,"label":"No Antivirus","sort_order":0,"value":"No Antivirus"},{"id":84,"option_id":23,"label":"Norton Anitivirus","sort_order":1,"value":"Norton Anitivirus"},{"id":85,"option_id":23,"label":"Macafee Antivirus","sort_order":2,"value":"Macafee Antivirus"}]
我需要循环并为每个重复的选项id值创建一个新数组

因此,新阵列的外观如下所示:

第一排

{'label':'1GB DDR2 Ram (Default)'},
{'id':73,'label':'1GB DDR2 Ram (+$15)':'id:74}
第二排

{'label':'No (Default)',
'id':75},{'label':'Yes (+$15)':'id:76}
沃比先生

我尝试了以下方法:

    var sortedOptionsList = sortArray(optionsList);
    var sorted_arr = optionsList.sort(); 
    //alert(app.OBJ2JSON(sorted_arr)) ;                    
    var results = [];
    for (var i = 0; i < optionsList.length - 1; i++) {
        if (sorted_arr[i + 1]['option_id'] == sorted_arr[i]['option_id']) {
    results.push(sorted_arr[i]);

function sortArray(array){
        array.sort(function (element_a, element_b) {
    return element_a[1] - element_b[1];
        });     
}
var sortedOptionsList=sortArray(选项列表);
var sorted_arr=optionsList.sort();
//警报(app.OBJ2JSON(sorted_arr));
var结果=[];
对于(变量i=0;i

但是排序后的数组没有按元素选项id排序。

我解决这个问题的方法是循环遍历数组,并通过测试数组的indexOf来获取副本的密钥,如果找到匹配项,则删除密钥。

请继续,如果您陷入问题一天,请在此处发布此站点的重点是没有stu学生们把他们的家庭作业交给其他人完成……如果你对你所写的代码有特殊的问题,我们很乐意提供帮助。用试用过的代码更新