首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储key-value

如何存储key-value
EN

Stack Overflow用户
提问于 2018-07-08 20:29:45
回答 3查看 56关注 0票数 1

我有一个元素数组

代码语言:javascript
复制
mapa = new Map();
someArray = ["5 5", "5 6", "5 12", "4 12"];

grupByRow() {
  for (let i = 0; i < this.someArray.length; i++) {
   const key = this.someArray[i].split(' ')[0];
   const value = this.someArray[i].split(' ')[1];
   this.mapa.set(key, value);
  }
}

当我尝试这样做时,值被覆盖为相同的键,是以某种方式存储键和数组值键=> 5,=> 5,6,12;

EN

回答 3

Stack Overflow用户

发布于 2018-07-08 20:32:35

您必须在每个Map条目中存储一个数组:

代码语言:javascript
复制
for(const entry of someArray) {
   const [row, value] = entry.split(" ");
   if(mapa.has(row)) {
     mapa.get(row).push(value);
   } else {
     mapa.set(row, [value]);
   }
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-08 21:00:38

JavaScript@Wojciech,您也可以尝试使用的对象来完成此任务,如下所示。

样本输出

代码语言:javascript
复制
{
    "4": [
        "12"
    ],
    "5": [
        "5",
        "6",
        "12"
    ]
}

代码

代码语言:javascript
复制
var someArray = ["5 5", "5 6", "5 12", "4 12"];

var obj = {}

for(var i=0; i<someArray.length; i++) {
	numbers = someArray[i].split(/\s+/)  // regular expression technique for multiple spaces
	
	if(obj[numbers[0]] === undefined)
		obj[numbers[0]] = [numbers[1]]
	else
		obj[numbers[0]].push(numbers[1])
}

console.log(JSON.stringify(obj, null, 4))

/*
{
    "4": [
        "12"
    ],
    "5": [
        "5",
        "6",
        "12"
    ]
}
*/

// console.log(obj['4'])
// // [ '12' ]

// console.log(obj['5'])
// // [ '5', '6', '12' ]

票数 1
EN

Stack Overflow用户

发布于 2018-07-08 21:25:51

您可以使用reduce来完成此任务。

代码语言:javascript
复制
var someArray = ["5 5", "5 6", "5 12", "4 12"];

var result = someArray.reduce((all, item) => {

    const [key, val] = item.split(' ');

    if (!all.has(key)) all.set(key, []);

    all.get(key).push(val);

    return all;

}, new Map());

console.log(result.get('5'));

您也可以对常规对象而不是Map执行相同的操作

代码语言:javascript
复制
var someArray = ["5 5", "5 6", "5 12", "4 12"];

var result = someArray.reduce((all, item) => {

    const [key, val] = item.split(' ');

    if (!all.hasOwnProperty(key)) all[key] = [];

    all[key].push(val);

    return all;

}, {});

console.log(result['5'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51232010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档