如何通过带有整数的键字符串组织数组

时间:2017-12-07 21:43:12

标签: javascript arrays

我如何使用数组对象键中提供的整数值将下面的数组组织到另一个数组中?

for(let key in response.results){
  console.log(response.results[key].destination);
}

如何将此数组组织成另一个看起来像这样的数组?

[
  {
     "itemQty_0": "443"
   },
   {
     "itemDescription_0": "Et aspernatur aspernatur qui sed ut do enim vel dignissimos libero nisi aut adipisci pariatur Est"
   },
   {
      "itemCapCheckbox_0": "on"
   },
   {
     "itemQty_1": "44"
   },
   {
     "itemDescription_1": "44"
   }
]

4 个答案:

答案 0 :(得分:3)

 const result = [];

 for(const obj of items){
   const keyId = Object.keys(obj)[0], [key, id] = keyId.split("_");
   if(result[id]){
     result[id][key] = obj[keyId];
   }else{
     result[id] = { [key] : obj[keyId] };
   }
 }

答案 1 :(得分:1)

您可以将数组缩减为Map,并将具有相同索引的属性收集到对象中。然后spread map values返回数组。

要查找密钥,您可以使用Object#keys获取密钥数组,然后选择第1个密钥(只有一个密钥)。然后用下划线分割键以获取属性名称和索引。



DECLARE @A table (Aid int, value int)
DECLARE @B table (Aid int, Cid int)
DECLARE @C table (Cid int, value int)

INSERT INTO @A VALUES (1, 1)
INSERT INTO @B VALUES (1, 2)
INSERT INTO @B VALUES (2, 3)
INSERT INTO @C VALUES (2, 4)
INSERT INTO @C VALUES (3, 6)
;

SELECT *
FROM @A
;

MERGE INTO @A tgt
USING (SELECT B.Aid, B.Cid, C.value FROM @B B JOIN @C C ON B.Cid = C.Cid) src
ON tgt.Aid = src.Aid

WHEN MATCHED THEN UPDATE
SET tgt.value = src.value

WHEN NOT MATCHED THEN
INSERT
(
    Aid
    , value
)

VALUES
(
    src.Aid
    , src.value
)
;

SELECT *
FROM @A
;




答案 2 :(得分:1)

您可以通过拆分键和索引部分的键来减少数组。

var array = [{ itemQty_0: "443" }, { itemDescription_0: "Et aspernatur aspernatur qui sed ut do enim vel dignissimos libero nisi aut adipisci pariatur Est" }, { itemCapCheckbox_0: "on" }, { itemQty_1: "44" }, { itemDescription_1: "44" }],
    grouped = array.reduce(function (r, o) {
        var key = Object.keys(o)[0],
            keys = key.split('_');

        r[keys[1]] = r[keys[1]] || {};
        r[keys[1]][keys[0]] = o[key];
        return r;
    }, []);

console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 3 :(得分:0)

好的,为此我们需要将对象数组聚合成一个看起来更像你想要的答案的结构。你想使用em可能。

Array.reduce

希望有所帮助! :)