同一功能的不同输出

时间:2015-11-15 17:55:12

标签: javascript

有些人可以解释这2个功能的不同输出吗?

SELECT 
referer_trackings.cookie_first_url,
sum(purchases.price) AS sales, 
count(purchases.id) AS volume
FROM purchases
JOIN referer_trackings 
ON referer_trackings.trackable_id = purchases.id 
JOIN items
ON purchases.item_id = items.id
WHERE items.seller_id = '39'
AND referer_trackings.trackable_type = 'Purchase'
AND purchases.workflow_state = 'payment_successful'
GROUP BY referer_trackings.cookie_first_url

3 个答案:

答案 0 :(得分:1)

在第二个函数中,您将分割一个字符串,然后返回反转的数组。

.join()方法不会改变它正在运行的myArray变量,因此就像.join()甚至没有被调用一样。换句话说,

myArray.join('');

与:

不同
myArray = myArray.join('');

这将为您提供与第一个功能相同的结果:

var reverse = function(string) {
    var myArray = string.split('');
    myArray.reverse();
    myArray = myArray.join('');
    return myArray;
}

..或者你可以只返回连接的数组:

return myArray.join('');

答案 1 :(得分:0)

你的第二个功能的问题是你需要重新分配连接操作的结果(或者只是返回myArray.join('')),否则它不会改变原始的myArray。所以你只需返回反向数组,而不是字符串。接下来会发生的是alert内部调用toString方法,相当于myArray.join()(注意,join没有参数),这与join(','相同) )默认情况下。

正确的代码是

var reverse = function(string) {
    var myArray = string.split('');
    myArray.reverse();
    myArray = myArray.join(''); // or simply return myArray.join(','); 
    return myArray;
}

答案 2 :(得分:0)

你的第二个函数中的myArray.join('')返回一个字符串,在你的情况下,你没有将它作为变量返回一个数组。如果您更改了这样的代码,它将返回相同的结果。

var reverse = function(string) {
    var myArray = string.split('');
    myArray.reverse();
    myArray = myArray.join('');
    return myArray;
}