从数组中分配一个键名
Posted
技术标签:
【中文标题】从数组中分配一个键名【英文标题】:assigning a key name from an array 【发布时间】:2022-01-22 15:07:28 【问题描述】:我似乎无法使键等于传入的名称数组的索引值的名称。
我想做什么:
创建名称和数字的键值以跟踪我有多少重复名称。
输入/输出:
names = [bob, joe, jill, bob, bill, bill]
输出将是 bob:2, joe:1, jill:1, bill:2
我还没有接触到这部分代码。目前只是想把钥匙弄好。但它应该描绘出我正在尝试做的事情。
我遇到的问题:
我似乎无法为我的集合中的每个名称创建密钥
我最初做了什么:
myset.add(names[i]:0)
我将其更改为一个名为 keyname
的变量,该变量正被分配在我的 forloop 下方。
这并没有改变。
function solution(names)
const myset = new Set();
for(let i=0; i<names.length; i++)
let keyname = names[i];
if(myset.has(names[i]))
console.log("already includes");
else(
myset.add(
keyname:0
)
)
console.log(myset);
控制台:
Set(5)
keyname: 0 ,
keyname: 0 ,
keyname: 0 ,
keyname: 0 ,
keyname: 0
【问题讨论】:
什么是输入数组,你期望什么输出?请添加问题本身 如果我的输入是 [bob,joe,jill, bob] 我的输出将是 bob:2, jill:1,joe:1。但我还没有到那部分。我现在只是想用正确的名称创建集合 请在问题本身中添加您期望的输入和输出...这对其他人来说也更容易理解... 【参考方案1】:Set
只是唯一值的集合。如果您要添加一个对象,那么它将不等于任何其他对象,除非两者在引用上不同。
Set 对象是值的集合。您可以遍历 按插入顺序排列的集合元素。 Set 中的一个值只能 发生一次;它在 Set 的集合中是独一无二的。
如果您只需要计算字符串的出现次数,那么您可以使用普通对象或 Map as:
function solution(names)
const dict = ;
for (let i = 0; i < names.length; ++i)
if (!dict[names[i]]) dict[names[i]] = 1;
else ++dict[names[i]];
console.log(dict);
solution(["bob", "joe", "jill", "bob"]);
function solution(names)
const map = new Map();
names.forEach((name) =>
!map.has(name) ? map.set(name, 1) : map.set(name, map.get(name) + 1)
);
console.log(map);
solution(["bob", "joe", "jill", "bob"]);
【讨论】:
【参考方案2】:尝试在 javascript 中使用对象。它可以存储键/值对。
function solution(names)
// javascript object
const values = ;
for(let i = 0; i < names.length; i++)
if(values[names[i]])
values[names[i]] = 1;
else
values[names[i]] += 1;
console.log(values);
【讨论】:
以上是关于从数组中分配一个键名的主要内容,如果未能解决你的问题,请参考以下文章
使用 TSQL OPENJSON 如何从具有动态键名的 JSON 数组中提取值
array_diff_key — 使用键名比较计算数组的差集
array_diff_key — 使用键名比较计算数组的差集
php 二维数组中取某个唯一的键值为键名。(通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组的元素为键值。)