在多维数组中,如何添加一个新维度,该维度是其他维度之一的所有先前值的总和?
我有什么:
var myarray = [[5,"a"],[10,"a"],[3,"a"],[2,"a"]];
我想要的是什么:
var newArray = [[5,"a",5],[10,"a",15],[3,"a",18],[2,"a",20]];
我想转this example(第二个答案,第二个代码块):
var myarray = [5, 10, 3, 2];
var result = myarray.reduce(function(r, a) {
if (r.length > 0)
a += r[r.length - 1];
r.push(a);
return r;
}, []);
// [5, 15, 18, 20]
并像这样应用:
var myarray = [[5,"a"],[10,"a"],[3,"a"],[2,"a"]];
var result = myarray.reduce(function(r, a) {
if (r.length > 0)
a += r[0][r.length - 1];
r[2].push(a);
return r;
}, []);
// [[5,"a",5],[10,"a",15],[3,"a",18],[2,"a",20]];
但我找不到一种有效的方法来分离出第一个值,以便在其上运行reduce
。我试过了foreach
,但是没有返回数组:
var firstValue = myarray.forEach(function(value, index) {
console.log(value[0]);
})
所以,我正在考虑将foreach输出转换成一个数组以某种方式进行操作,然后将其推回。但它看起来非常复杂。有人能指出我正确的方向吗?
感谢。
答案 0 :(得分:1)
为了减少数组并且只从每个数组中提取第一个元素,实际上你需要使用foreach
循环构建一个数组。
在循环外创建一个数组,并使用array.push(value)
构建另一个数组。
var firstValues = [];
myarray.forEach(function(value, index) {
firstValues.push(value);
});
由于您已经在数组中循环,因此您可以在一个循环中执行大量逻辑。
var currentSum = 0;
myarray.forEach(function(value, index) {
currentSum += value[0]; //add to the running sum
value.push(currentSum); //append the running sum to the end of this inner array
});
答案 1 :(得分:1)
一个简单的for循环应该这样做
if (strpos($row['links'],'tvguide') !== false) {
echo 'tvguide found';
}