我试图从多维数组中获取较低的数值。就像这样。
alert() // 25
我想返回较低值的警报,如下所示:
08:44:26.560 [consensus/noops] processTransactions -> DEBU 053 Starting TX batch with timestamp: seconds:1473929066 nanos:560229743
08:44:26.560 [consensus/noops] processTransactions -> DEBU 054 Executing batch of 1 transactions with timestamp seconds:1473929066 nanos:560229743
08:44:26.563 [chaincode] getArgsAndEnv -> DEBU 055 Executable is /opt/gopath/bin/1e90b51f9129b97d5312d5c24364085777602a06d40d6e2c9209b4f30d7e66facb26e956443028611539962acc6de550eba03bbb1fd0e7bbd655cb19c5a6ef84
08:44:26.564 [chaincode] Deploy -> DEBU 056 deploying chaincode 1e90b51f9129b97d5312d5c24364085777602a06d40d6e2c9209b4f30d7e66facb26e956443028611539962acc6de550eba03bbb1fd0e7bbd655cb19c5a6ef84(networkid:dev,peerid:vp0)
08:44:26.564 [container] lockContainer -> DEBU 057 waiting for container(dev-vp0-1e90b51f9129b97d5312d5c24364085777602a06d40d6e2c9209b4f30d7e66facb26e956443028611539962acc6de550eba03bbb1fd0e7bbd655cb19c5a6ef84) lock
08:44:26.564 [container] lockContainer -> DEBU 058 got container (dev-vp0-1e90b51f9129b97d5312d5c24364085777602a06d40d6e2c9209b4f30d7e66facb26e956443028611539962acc6de550eba03bbb1fd0e7bbd655cb19c5a6ef84) lock
**08:44:26.565 [dockercontroller] deployImage -> ERRO 059 Error building images: cannot connect to Docker endpoint**
如果有人能帮助我,我将非常感激。
答案 0 :(得分:1)
var array = [
["guitar", "99", "guitar.png"],
["vinyl", "89", "vinyl.png"],
["bed", "25", "bed.png"]
];
min_second = array.reduce(function(a, x) {
var b = parseFloat(x[1]);
return a < b ? a : b;
}, Number.POSITIVE_INFINITY);
console.log(min_second);
array.reduce
将回调函数应用于累加器和每个连续元素,并将结果赋给累加器;累加器从+∞开始。回调的目的是第二个值(转换为数字)小于该值的每个元素成为新的累加器。因此,
如果将其与大于累加器当前值的值进行比较,则不会改变。
答案 1 :(得分:1)
将问题分解为两部分,您可以单独解决(或使用现有工具来解决):
首先,我们使用map
通过对每个元素应用一些转换,从旧的数组创建一个新数组。在这种情况下,转换是提取第二个元素,并将其转换为数字,所以:
Things.map(([,num]) => +num))
[,num]
表示将传入的数组的第二个元素赋值给参数num
),加号确保它是一个数字。请参阅下面的非ES6版本。
对于第二个,我们可以使用Math.min
。
结合这些,我们可以写:
Math.min(...Things.map(([,num]) => +num)))
Math.min(...)
将映射数组中的所有元素(数字)作为参数传递给Math.min
。
强制免责声明:=>
是ES6箭头功能,[,num]
是ES6参数解构(和...
是ES6参数展开运算符。这些仅适用于以某种方式支持ES6的环境。否则,请回到
Math.min.apply(0, Things.map(function(elt) { return +elt[1]; }))
答案 2 :(得分:0)
假设第二个元素是我们正在比较的值。我们可以简单地做一个标准算法来迭代数组并找到最低值。
var array = [
["guitar", "99", "guitar.png"],
["vinyl", "89", "vinyl.png"],
["bed", "25", "bed.png"]
];
// Assume the first element has the lowest value
var lowest = +Infinity; // `+` cast to number
array.forEach(function(item) {
if(+item[1] < lowest) lowest = +item[1]; // If we find a lower value update lowest
});
console.log(lowest);
答案 3 :(得分:-1)
使用sort函数尝试:
function compare(a,b) {
if (parseInt(a[1]) < parseInt(b[1]))
return -1;
if (parseInt(a[1]) > parseInt(b[1]))
return 1;
return 0;
}
var myArray = [
["guitar", "99", "guitar.png"],
["vinyl", "89", "vinyl.png"],
["bed", "25", "bed.png"]
];
myArray.sort(compare);
alert(myArray[0][1]);