Array.prototype.find.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. load("test-common.js");
  2. try {
  3. assert(Array.prototype.find.length === 1);
  4. assertThrowsError(() => {
  5. [].find(undefined);
  6. }, {
  7. error: TypeError,
  8. message: "undefined is not a function"
  9. });
  10. var array = ["hello", "friends", 1, 2, false];
  11. assert(array.find(value => value === "hello") === "hello");
  12. assert(array.find((value, index, arr) => index === 1) === "friends");
  13. assert(array.find(value => value == "1") === 1);
  14. assert(array.find(value => value === 1) === 1);
  15. assert(array.find(value => typeof(value) !== "string") === 1);
  16. assert(array.find(value => typeof(value) === "boolean") === false);
  17. assert(array.find(value => value > 1) === 2);
  18. assert(array.find(value => value > 1 && value < 3) === 2);
  19. assert(array.find(value => value > 100) === undefined);
  20. assert([].find(value => value === 1) === undefined);
  21. var callbackCalled = 0;
  22. var callback = () => { callbackCalled++; };
  23. [].find(callback)
  24. assert(callbackCalled === 0);
  25. [1, 2, 3].find(callback);
  26. assert(callbackCalled === 3);
  27. callbackCalled = 0;
  28. [1, , , "foo", , undefined, , ,].find(callback);
  29. assert(callbackCalled === 8);
  30. callbackCalled = 0;
  31. [1, , , "foo", , undefined, , ,].find(value => {
  32. callbackCalled++;
  33. return value === undefined;
  34. });
  35. assert(callbackCalled === 2);
  36. console.log("PASS");
  37. } catch (e) {
  38. console.log("FAIL: " + e);
  39. }