While this helps to explain the pattern, the reality is that you're unlikely to want to do these kinds of things in JavaScript. You are likely better off either using an object, Map or array for these types of profiles.
Aside: how do others feel about these "Programming concept/algorithm X in JavaScript" posts?
Just curious if anyone finds these types of basic level tutorials useful? I mean, generics are probably a core feature in using TypeScript in the first place. There's also a lot of posts that are pretty intro js or node as well. Curious what opinions are.
I'd suggest posting on stack overflow.
That said..
const checks = Array.from(
document.querySelectorAll('input[name^=newpackqty]')
);
const noSrcLabels = !checks.find(el => ~~el.value);
the first one gets all inputs with a name that starts with newpackqty, and the second checks to find if one has a numeric value that is not 0, and inverts the rsult (!).
The blacklist isn't really much worse than the whitelist depending on the database... though if you're using a distributed/redundant db, such as Cassandra/Scylla, BigTable, Dynamo or Storage Tables, then a whitelist can be opportunistic.
If you're using a structured (SQL) database, either white or blacklist should work roughly equally.
While this does show how you *could* use linked lists in JavaScript, in practice, don't do this... just use JS Arrays with plain objects. The overhead for the article's methods will generally take a lot more memory and not really perform better than Array.prototype methods already available.
Decent primer on iterables. As I was reading, was getting ready to make a comment about generators and async generators, but it's noted in the last paragraph. Look forwar to the next/related article.