本质上,我想在字典上使用.map()对特定键中的每个元素执行一条语句。语句本身就是我需要按用户名输入用户名,并在另一个数组中检查它,并且: -如果用户名存在,则记录数组中包含的值; -否则,记录0;
好的,首先,感谢您的旅行帮助!
第二,您需要知道我的背景是数据分析而不是编程,我通常使用Python,但是为此,我正在与IT团队负责人合作,他坚持使用TypeScript,所以我们就在这里。
基本上,我有以下对象: 1.字典allEntries:{ 有效:布尔值; 用户:字符串; 2.另一本字典,其中包含数组intUsernames:string [] []和桩(stakes):[],我们希望在适当的地方记录
我需要遍历allEntries,检查intUsernames中的每个用户名是否在其中,如果存在,则记录其相应的“ stakes”值;否则,记录0。
let values = allEntries.map(element => intUsernames[element.user] || 0);
但是后来我意识到这可能不起作用,因为我需要访问每个条目的本金值,所以我尝试了:
let values = [];
for (let entry of allEntries) {
if (entry.user !in result.interestingUsers) {
values.fill("0")
}
else {
values.fill(result.interestingUsers.map(function (userEntry){ return [userEntry.stakes]}))
};
期望值的数组[] []为[0]或自然数。但是,使用第一种方法,我得到的数组只有[0],而使用第二种方法,我得到的数组是空的[]。
答案 0 :(得分:0)
这是您想要的吗?
const allEntries = [{ user: "foo", stake: 500 }, { user: "bar", stake: 100 }];
const result = {
interestingUsers: ["foo"]
};
const values = [];
allEntries.forEach((entry, index) => {
const found = result.interestingUsers.find(el => entry.user === el);
values[index] = found ? entry.stake : 0;
});
console.log(values); // [ 'foo', 0 ]
尽管我不确定您打算如何实现此目标,但是我认为,最好不要仅创建一个具有值的新数组,这将是一个更好的主意,但很难跟踪哪个“风险”是哪个“用户”。
这样做可能会更好:
const allEntries = [{ username: "foo", stake: 500 }, { username: "bar", stake: 100 }];
const result = { interestingUsers: ["foo"] };
const filteredUsers = allEntries.filter(entry => result.interestingUsers.includes(entry.username))
console.log(filteredUsers); // [ { username: "foo", stake: 500 }, 0 ]
请注意,要使.includes
工作,您可能必须确保在tsconfig.json中将compilerOptions.target = 2016
设置为