Как сопоставить объект по ключу и значению, используя JavaScript?

Это может быть дефект интерпретатора java, но java на HPUX не убивает -9, а только убивает -TERM.

Я сделал небольшой тест testDestroy.java:

ProcessBuilder pb = new ProcessBuilder(args);
Process process = pb.start();
Thread.sleep(1000);
process.destroy();
process.waitFor();

И вызов:

$ tusc -f -p -s signal,kill -e /opt/java1.5/bin/java testDestroy sh -c 'trap "echo TERM" TERM; sleep 10'

умирает после 10 секунд (не убивается после 1s, как ожидалось) и показывает:

...
[19999]   Received signal 15, SIGTERM, in waitpid(), [caught], no siginfo
[19998] kill(19999, SIGTERM) ............................................................................. = 0
...

Выполнение этого же на окнах кажется

На самом деле я нашел исходный код Java - Process.destroy () для Linux , связанная с потоком и реализация openjava, похоже, использует -TERM, что кажется очень неправильным.

-3
задан halfer 13 February 2019 в 22:12
поделиться

2 ответа

Вы можете взять массив для нужных групп и связанных ключей и использовать итеративный и рекурсивный подход.

var data = [{ _id: "5c407834953d7f420d56f866", allocated_to: "FIELD", zone: "NORTH", state: "DELHI", location: "NEW DELHI", customer_name: "REET INFOTECH", bank_name_of_customer: "YES BANK", cl_contract_id: "LAI-00016881", lk_loan_account_id: "LK0000015094", front_end_manager_name: "SONAL", area_collection_manager: "ASHIS JENA", installment_date: "", collection_manager: "" }, { _id: "5c407834953d7f420d56f867", allocated_to: "FIELD", zone: "NORTH", state: "DELHI", location: "Sree Nagar", customer_name: "REET", bank_name_of_customer: "Corporate BANK", cl_contract_id: "LAI-00016881", lk_loan_account_id: "LK0000015094", front_end_manager_name: "SONAL", area_collection_manager: "ASHIS JENA", installment_date: "", collection_manager: "" }, { _id: "5c407834953d7f420d56f868", allocated_to: "FIELD", zone: "EAST", state: "Odisha", location: "Bhubaneswar", customer_name: "REET", bank_name_of_customer: "PNB BANK", cl_contract_id: "LAI-00016881", lk_loan_account_id: "LK0000015094", front_end_manager_name: "SONAL", area_collection_manager: "ASHIS JENA", installment_date: "", collection_manager: "" }, { _id: "5c407834953d7f420d56f890", allocated_to: "FIELD", zone: "EAST", state: "Assam", location: "Gawhati", customer_name: "REET", bank_name_of_customer: "SBI BANK", cl_contract_id: "LAI-00016881", lk_loan_account_id: "LK0000015094", front_end_manager_name: "SONAL", area_collection_manager: "ASHIS JENA", installment_date: "", collection_manager: "" }],
    groups = [
        ['zone_list', 'zone'],
        ['state_list', 'state'],
        ['location_list', 'location'],
        ['task_list', '_id', 'front_end_manager_name', 'area_collection_manager', 'collection_manager'],
        ['loan_accounts_assigned', 'lk_loan_account_id', 'allocated_to', 'cl_contract_id', 'customer_name', 'bank_name_of_customer']
    ],
    result = data.reduce((r, o) => {
        groups.reduce((t, [group, ...keys]) => {
            var temp = (t[group] = t[group] || []).find(p => o[keys[0]] === p[keys[0]]);
            if (!temp) {
                temp = Object.assign({}, ...keys.map(k => ({ [k]: o[k] })));
                t[group].push(temp);
            }
            return temp;
        }, r);
        return r;
    }, {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
ответ дан Nina Scholz 13 February 2019 в 22:12
поделиться

Следующий код не дает вам полного правильного результата, но вы должны лучше понять, как это сделать. Ссылка на .reduce (): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

var oldArr=[
    {
      "id":"5c407834953d7f420d56f866",
      "allocated_to":"FIELD",
      "zone":"NORTH",
      "state":"DELHI",
      "location":"NEW DELHI",
      "customer_name":"REET INFOTECH"
    },
    {
      "id":"5c407834953d7f420d56f867",
      "allocated_to":"FIELD",
      "zone":"NORTH",
      "state":"JK",
      "location":"Sree Nagar",
      "customer_name":"REET"
    },
    {
      "id":"5c407834953d7f420d56f868",
      "allocated_to":"FIELD",
      "zone":"EAST",
      "state":"Odisha",
      "location":"Bhubaneswar",
      "customer_name":"REET"
    }
]

let result = oldArr.reduce(
    function(acc, curr){
        var sameZone =  acc.find(function (accData){ return accData.zone===curr.zone})
        if(sameZone){
            sameZone.state_list.push({
                state: curr.state,
                    task_list: [{
                        user_pkId: curr.id,
                        loan_accounts_assigned: [{
                            customer_name: curr.customer_name
                        }]
                    }]
            })
        }else{
            acc.push({
                zone: curr.zone,
                state_list: [{
                    state: curr.state,
                    task_list: [{
                        user_pkId: curr.id,
                        loan_accounts_assigned: [{
                            customer_name: curr.customer_name
                        }]
                    }]
                }]           
            })          
        }        
        return acc;
    }, []);
console.log(result);

0
ответ дан Alvin Theodora 13 February 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: