Created
October 25, 2017 19:58
-
-
Save grej/4ca21d9a4fa7d5c87107cb5b8374cd2b to your computer and use it in GitHub Desktop.
JS Bin // source http://jsbin.com/vafuzav
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width"> | |
| <title>JS Bin</title> | |
| </head> | |
| <body> | |
| <script id="jsbin-javascript"> | |
| // const a = [ | |
| // [1, 2, 3, 4], // row 0 of data | |
| // [0, 1, 1, 0], // row 1 of data | |
| // [1, 2, 3, 4], | |
| // [1, 1, 1, 0] | |
| // ]; | |
| // const addToCompFn = (key, conditionsObject, condF) => { | |
| // const addCondition = (cond) => { | |
| // if (condF) { | |
| // condF = condF && cond; | |
| // } else { | |
| // condF = cond; | |
| // } | |
| // } | |
| // if (key[conditionsObject].gte) { | |
| // addCondition((v) => v >= conditions[c].gte); | |
| // } | |
| // if (key[conditionsObject].lte) { | |
| // addCondition((v) => v <= conditions[c].lte); | |
| // } | |
| // return condF; | |
| // } | |
| // const getComparison = (conditions) => { | |
| // let condF; | |
| // for (key in conditions) { | |
| // condF = addToCompFn(key, conditions, condF) | |
| // } | |
| // return condF; | |
| // } | |
| // const cObj = { | |
| // 0: { | |
| // gte: 1, | |
| // lte: 3 | |
| // } | |
| // } | |
| // const validIdxs = (validIdxArray) => { | |
| // return validIdxArray.reduce((a, validIdxArray) => { | |
| // let len = a.length; | |
| // let temp = new Array(len); | |
| // for(let i = 0; i < len; i++) { | |
| // temp[i] = a[i] && b[i] | |
| // } | |
| // return temp; | |
| // }) | |
| // } | |
| const truths = []; | |
| let numPoints = 1000; | |
| const generateTruthVector = (numPoints) => { | |
| let myArr = new Array(numPoints); | |
| for (let i=0; i<numPoints; i++) { | |
| myArr[i] = Number(Boolean(Math.random() > 0.5)) | |
| } | |
| return myArr; | |
| } | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| const getValidIdxs = (validIdxMatrix) => { | |
| let len = validIdxMatrix[0].length; | |
| let temp = new Array(len); | |
| return validIdxMatrix.reduce((a, b) => { | |
| a.forEach((val, idx) => { | |
| temp[idx] = val * b[idx] | |
| }) | |
| return temp; | |
| }) | |
| } | |
| let valids = getValidIdxs(truths) | |
| let validIdxs = valids.reduce((validArr, value, idxToCheck) => { | |
| if (value) { | |
| validArr.push(idxToCheck); | |
| } | |
| return validArr; | |
| }, []); | |
| console.log(validIdxs.length, validIdxs) | |
| // sample a random index out of the array | |
| console.log(validIdxs[Math.random() * validIdxs.length >> 0]); | |
| </script> | |
| <script id="jsbin-source-javascript" type="text/javascript">// const a = [ | |
| // [1, 2, 3, 4], // row 0 of data | |
| // [0, 1, 1, 0], // row 1 of data | |
| // [1, 2, 3, 4], | |
| // [1, 1, 1, 0] | |
| // ]; | |
| // const addToCompFn = (key, conditionsObject, condF) => { | |
| // const addCondition = (cond) => { | |
| // if (condF) { | |
| // condF = condF && cond; | |
| // } else { | |
| // condF = cond; | |
| // } | |
| // } | |
| // if (key[conditionsObject].gte) { | |
| // addCondition((v) => v >= conditions[c].gte); | |
| // } | |
| // if (key[conditionsObject].lte) { | |
| // addCondition((v) => v <= conditions[c].lte); | |
| // } | |
| // return condF; | |
| // } | |
| // const getComparison = (conditions) => { | |
| // let condF; | |
| // for (key in conditions) { | |
| // condF = addToCompFn(key, conditions, condF) | |
| // } | |
| // return condF; | |
| // } | |
| // const cObj = { | |
| // 0: { | |
| // gte: 1, | |
| // lte: 3 | |
| // } | |
| // } | |
| // const validIdxs = (validIdxArray) => { | |
| // return validIdxArray.reduce((a, validIdxArray) => { | |
| // let len = a.length; | |
| // let temp = new Array(len); | |
| // for(let i = 0; i < len; i++) { | |
| // temp[i] = a[i] && b[i] | |
| // } | |
| // return temp; | |
| // }) | |
| // } | |
| const truths = []; | |
| let numPoints = 1000; | |
| const generateTruthVector = (numPoints) => { | |
| let myArr = new Array(numPoints); | |
| for (let i=0; i<numPoints; i++) { | |
| myArr[i] = Number(Boolean(Math.random() > 0.5)) | |
| } | |
| return myArr; | |
| } | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| const getValidIdxs = (validIdxMatrix) => { | |
| let len = validIdxMatrix[0].length; | |
| let temp = new Array(len); | |
| return validIdxMatrix.reduce((a, b) => { | |
| a.forEach((val, idx) => { | |
| temp[idx] = val * b[idx] | |
| }) | |
| return temp; | |
| }) | |
| } | |
| let valids = getValidIdxs(truths) | |
| let validIdxs = valids.reduce((validArr, value, idxToCheck) => { | |
| if (value) { | |
| validArr.push(idxToCheck); | |
| } | |
| return validArr; | |
| }, []); | |
| console.log(validIdxs.length, validIdxs) | |
| // sample a random index out of the array | |
| console.log(validIdxs[Math.random() * validIdxs.length >> 0]); | |
| </script></body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // const a = [ | |
| // [1, 2, 3, 4], // row 0 of data | |
| // [0, 1, 1, 0], // row 1 of data | |
| // [1, 2, 3, 4], | |
| // [1, 1, 1, 0] | |
| // ]; | |
| // const addToCompFn = (key, conditionsObject, condF) => { | |
| // const addCondition = (cond) => { | |
| // if (condF) { | |
| // condF = condF && cond; | |
| // } else { | |
| // condF = cond; | |
| // } | |
| // } | |
| // if (key[conditionsObject].gte) { | |
| // addCondition((v) => v >= conditions[c].gte); | |
| // } | |
| // if (key[conditionsObject].lte) { | |
| // addCondition((v) => v <= conditions[c].lte); | |
| // } | |
| // return condF; | |
| // } | |
| // const getComparison = (conditions) => { | |
| // let condF; | |
| // for (key in conditions) { | |
| // condF = addToCompFn(key, conditions, condF) | |
| // } | |
| // return condF; | |
| // } | |
| // const cObj = { | |
| // 0: { | |
| // gte: 1, | |
| // lte: 3 | |
| // } | |
| // } | |
| // const validIdxs = (validIdxArray) => { | |
| // return validIdxArray.reduce((a, validIdxArray) => { | |
| // let len = a.length; | |
| // let temp = new Array(len); | |
| // for(let i = 0; i < len; i++) { | |
| // temp[i] = a[i] && b[i] | |
| // } | |
| // return temp; | |
| // }) | |
| // } | |
| const truths = []; | |
| let numPoints = 1000; | |
| const generateTruthVector = (numPoints) => { | |
| let myArr = new Array(numPoints); | |
| for (let i=0; i<numPoints; i++) { | |
| myArr[i] = Number(Boolean(Math.random() > 0.5)) | |
| } | |
| return myArr; | |
| } | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| truths.push(generateTruthVector(numPoints)) | |
| const getValidIdxs = (validIdxMatrix) => { | |
| let len = validIdxMatrix[0].length; | |
| let temp = new Array(len); | |
| return validIdxMatrix.reduce((a, b) => { | |
| a.forEach((val, idx) => { | |
| temp[idx] = val * b[idx] | |
| }) | |
| return temp; | |
| }) | |
| } | |
| let valids = getValidIdxs(truths) | |
| let validIdxs = valids.reduce((validArr, value, idxToCheck) => { | |
| if (value) { | |
| validArr.push(idxToCheck); | |
| } | |
| return validArr; | |
| }, []); | |
| console.log(validIdxs.length, validIdxs) | |
| // sample a random index out of the array | |
| console.log(validIdxs[Math.random() * validIdxs.length >> 0]); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment