Node JS Map Of Values 如何加起来为 K
How Node JS Map Of Values Adds Up to K
给定一个数字列表 const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
和一个数字 k 说 const k = 17;
,return 是否列表中的任何两个数字加起来等于 k。例如,给定 [10, 15, 3, 7] 和 k = 17,我们应该 return 正确,因为 10 + 7 =17.
在地图中使用 key,values
编写了以下代码,但似乎无法获得解决方案,任何人都可以建议下面需要更改哪些代码,尤其是使用 Maps
[=15= 想要解决]
const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
const k = 17;
let addInput = new Map(arr.flatMap((x) => Object.entries(x)));
addInput.forEach((v) => {
for (var i = 0; i < addInput.size; i++) {
if (v != addInput[i]) {
if (addInput[i] + v == k) {
console.log(`${v} + ${addInput[i]} = ${k} (true)`);
}
}
}
});
您的代码中的方法不明确:
您应该使用 Set
删除重复项而不是 Map
并且您应该使用 map
运算符从对象中提取值,您也不能访问具有数字索引的映射运算符,如数组。
const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
const k = 17;
// using set to remove duplicate
let valueSet = new Set(arr.flatMap((x) => Object.values(x)));
// using array to iterate easily, convert by destruturing
let valueArray = [...valueSet];
valueArray.forEach((v1, i1) => {
for (let i2 = i1 + 1 ; i2 < valueArray.length; i2++) {
if ((v1 + valueArray[i2]) === k) {
console.log(`${v1} + ${valueArray[i2]} = ${k} (true)`);
}
}
});
给定一个数字列表 const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
和一个数字 k 说 const k = 17;
,return 是否列表中的任何两个数字加起来等于 k。例如,给定 [10, 15, 3, 7] 和 k = 17,我们应该 return 正确,因为 10 + 7 =17.
在地图中使用 key,values
编写了以下代码,但似乎无法获得解决方案,任何人都可以建议下面需要更改哪些代码,尤其是使用 Maps
[=15= 想要解决]
const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
const k = 17;
let addInput = new Map(arr.flatMap((x) => Object.entries(x)));
addInput.forEach((v) => {
for (var i = 0; i < addInput.size; i++) {
if (v != addInput[i]) {
if (addInput[i] + v == k) {
console.log(`${v} + ${addInput[i]} = ${k} (true)`);
}
}
}
});
您的代码中的方法不明确:
您应该使用 Set
删除重复项而不是 Map
并且您应该使用 map
运算符从对象中提取值,您也不能访问具有数字索引的映射运算符,如数组。
const arr = [{ key1: 10 }, { key2: 5 }, { key3: 7 }, { key4: 17 }];
const k = 17;
// using set to remove duplicate
let valueSet = new Set(arr.flatMap((x) => Object.values(x)));
// using array to iterate easily, convert by destruturing
let valueArray = [...valueSet];
valueArray.forEach((v1, i1) => {
for (let i2 = i1 + 1 ; i2 < valueArray.length; i2++) {
if ((v1 + valueArray[i2]) === k) {
console.log(`${v1} + ${valueArray[i2]} = ${k} (true)`);
}
}
});