Вы можете использовать это: он перебирает свойство строки и получает тип и стоимость платежа. Если тип платежа уже находится в объекте, он добавляется к нему, иначе он создает свойство.
var obj={
"total_rows":59,
"offset":0,
"rows":[
{
"key":"PAY_2019-01-11T12:18:52.085Z",
"id":"PAY_2019-01-11T12:18:52.085Z",
"value":110,
"doc":{
"paymentStatus":true,
"paymentOption":"card",
"amount":110,
"tenderedTotal":110,
"time":"2019-01-11T12:18:52.085Z",
"orderId":"ORD_2019-01-11T12:18:52.085Z",
"type":"payment",
"_id":"PAY_2019-01-11T12:18:52.085Z",
"_rev":"1-9fdc73a415914311a80db1727fbc593b"
}
},
{
"key":"PAY_2019-01-11T16:27:29.553Z",
"id":"PAY_2019-01-11T16:27:29.553Z",
"value":66,
"doc":{
"paymentStatus":true,
"paymentOption":"cash",
"amount":66,
"tenderedTotal":66,
"time":"2019-01-11T16:27:29.553Z",
"orderId":"ORD_2019-01-11T16:27:29.553Z",
"type":"payment",
"_id":"PAY_2019-01-11T16:27:29.553Z",
"_rev":"1-a58e3811d11c4ca3a92bd1e206e6e0f3"
}
},
{
"key":"PAY_2019-01-11T18:12:13.716Z",
"id":"PAY_2019-01-11T18:12:13.716Z",
"value":60,
"doc":{
"paymentStatus":true,
"paymentOption":"account",
"amount":60,
"tenderedTotal":152,
"time":"2019-01-11T18:12:13.716Z",
"orderId":"ORD_2019-01-11T18:12:13.716Z",
"type":"payment",
"fromCustomerAccount":true,
"customerPayment":false,
"grandTotal":60,
"customer":{
"type":"account",
"account_type":"customer",
"fname":"Mukopaje",
"lname":"Singogo",
"phone":"974776247",
"email":"mukopaje@gmail.com",
"region":"Other",
"city":"Lusaka",
"balance":0,
"status":true,
"index":0,
"_id":"CST_2019-01-03T11:27:22.924Z",
"_rev":"4-9453c05f151242a39bc5511323bbb820"
},
"customerPaid":152,
"customer_id":"CST_2019-01-03T11:27:22.924Z",
"credeb":"debit",
"_id":"PAY_2019-01-11T18:12:13.716Z",
"_rev":"1-0486777aaf1444bdaa8bcd35dd18c1d9"
}
}
]
}
var a=obj.rows;
var k={};
a.forEach((e)=>{
if(!k.hasOwnProperty(e.doc.paymentOption))
{
k[e.doc.paymentOption]=0;
}
if(k.hasOwnProperty(e.doc.paymentOption))
{
k[e.doc.paymentOption]=Number(k[e.doc.paymentOption])+Number(e.value);
}
})
console.log(k)
Ответ зависит от того, какая ОС рассматривается. В общем, хотя:
Для TCP нет. У вас может быть только одно приложение, прослушивающее один и тот же порт одновременно. Теперь, если у вас есть 2 сетевые карты, вы можете настроить одно приложение для прослушивания на первом IP-адресе, а второе на втором IP-адресе, используя один и тот же номер порта.
Для UDP (Multicast) несколько приложений могут подписаться на один и тот же порт.
Редактировать: Начиная с ядра Linux 3.9 и новее, поддержка нескольких приложений, прослушивающих один и тот же порт, была добавлена с помощью параметра SO_REUSEPORT
. Более подробная информация доступна в этой статье lwn.net.
Просто чтобы поделиться тем, что упомянул @jnewton. Я запустил nginx и встроенный процесс tomcat на моем Mac. Я вижу, как процесс запускается на 8080.
LT<XXXX>-MAC:~ b0<XXX>$ sudo netstat -anp tcp | grep LISTEN
tcp46 0 0 *.8080 *.* LISTEN
tcp4 0 0 *.8080 *.* LISTEN
В принципе, нет.
Это не высечено на камне; но так написаны все API: приложение открывает порт, получает его дескриптор, а ОС уведомляет его (через этот дескриптор), когда приходит клиентское соединение (или пакет в случае UDP).
Нет. Только одно приложение может связываться с портом за раз, и поведение при принудительном связывании не определено.
С многоадресными сокетами - что звучит совсем не так, как вы хотите - более одного приложения могут связываться с портом, если SO_REUSEADDR установлен в параметрах каждого сокета.
Вы можете сделать это, написав "master" ", который принимает и обрабатывает все соединения, а затем передает их двум вашим приложениям, которым необходимо прослушивать один и тот же порт. Это подход, который используют веб-серверы и подобные, поскольку многим процессам необходимо прослушивать 80.
Помимо этого, мы углубляемся в особенности - вы отметили и TCP, и UDP, что это такое? Кроме того, на какой платформе?
затем передает их двум вашим приложениям, которым необходимо прослушивать один и тот же порт. Это подход, который используют веб-серверы и подобные, поскольку многим процессам необходимо прослушивать 80.Помимо этого, мы углубляемся в особенности - вы отметили и TCP, и UDP, что это такое? Кроме того, на какой платформе?
затем передает их двум вашим приложениям, которым необходимо прослушивать один и тот же порт. Это подход, который используют веб-серверы и подобные, поскольку многим процессам необходимо прослушивать 80.Помимо этого, мы углубляемся в особенности - вы отметили и TCP, и UDP, что это такое? Кроме того, на какой платформе?