JavaScript数组在奇数索引处拆分

JavaScript数组在奇数索引处拆分,javascript,arrays,Javascript,Arrays,我有一系列产品,其中包含产品名称和制造商,例如“产品”、“制造商”、“产品”、“制造商”等 如何将阵列拆分为单独的阵列,以便将产品和制造商放在单独的阵列中?我想在每一个奇数索引处将其拆分,这样我就可以将制造从数组中取出,并将其添加到一个新数组中 谢谢。这应该可以: function separate(array) { var products = [], manufacturers = []; for (var i = 0, length = array.leng

我有一系列产品,其中包含产品名称和制造商,例如
“产品”、“制造商”、“产品”、“制造商”

如何将阵列拆分为单独的阵列,以便将产品和制造商放在单独的阵列中?我想在每一个奇数索引处将其拆分,这样我就可以将制造从数组中取出,并将其添加到一个新数组中

谢谢。

这应该可以:

function separate(array) {
    var products = [],
        manufacturers = [];
    for (var i = 0, length = array.length; i < length; i++) {
        if (i % 2 === 0) {
            products.push(array[i]);    
        } else {
            manufacturers.push(array[i]);  
        }        
    }
    return {
        products: products,
        manufacturers: manufacturers 
    };
}
函数分离(数组){
var乘积=[],
制造商=[];
for(var i=0,length=array.length;i

尝试以下方法:

var arr = ["product","manufacturer","product","manufacturer"];
var products = [];
var manufacturers = [];
for (var i = 0; i < arr.length; i += 2) {
    products.push(arr[i]);
    arr[i+1] && manufacturers.push(arr[i + 1]);
}
var result = ["Product #1", "ABC Company", "Product #2", "DEF Company"];
var arr=[“产品”、“制造商”、“产品”、“制造商”];
var乘积=[];
var制造商=[];
对于(变量i=0;i
编辑:我的回答在节目中有点晚。我强烈希望你能选一个做同样事情的人

如果您的阵列如下所示:

var arr = ["product","manufacturer","product","manufacturer"];
var products = [];
var manufacturers = [];
for (var i = 0; i < arr.length; i += 2) {
    products.push(arr[i]);
    arr[i+1] && manufacturers.push(arr[i + 1]);
}
var result = ["Product #1", "ABC Company", "Product #2", "DEF Company"];
您可以使用
for
循环提取产品和制造商

var products = [];
var manufacturers = [];
for (var i = 0; i < results.length; ++i) {
    if (i % 2 === 0) {
        products.push(products[i]);
    } else {
        manufacturers.push(products[i]);
    }
}
var产品=[];
var制造商=[];
对于(变量i=0;i
/**
*@param坦率的结果数组
*@return返回一个数组,其中索引0=偶数数组,索引1=奇数数组
*/
函数拆分数组(candid){
var oddOnes=[],
晚上=[];

对于(var i=0;i使用数学和mod运算符

使用索引(i,也许)通过数组并检查i的值

if (i % 2 == 0){
goes_to_even_array();
]else{
goes_odd_array();
}

好的,这里还有一个条目:

var arr = ['p0','m0','p1','m1','p2'];
var products = [];
var manufacturers = [];
var i = 0, iLen = arr.length;

while (i < iLen) {
  manufacturers.push(arr[i++]);
  products.push(arr[i++]);
}
如果你绝对相信长度是相等的:

var i = arr.length;
while (i) {
  manufacturers.push(arr[--i]);
  products.push(arr[--i]);
}

但如果长度是奇数,这将进入一个无止境的循环。

另一种使用递归的方法:)

Underline.js做得很好

_.groupBy(["product", "manufacturer","product", "manufacturer"], function(val, index){ return index % 2; });
=> {1: ["product", "product"], 2: ["manufacturer", "manufacturer"]}

这确实会让你容易出错。(是的,我知道JS不会爆炸,但这仍然不是一个好主意。)循环应该是
iYes,我希望是最好的:)谢谢你的评论。似乎不起作用。我得到
NaN:Array(4)[“产品”、“制造商”、“产品”、“制造商”]
_.groupBy(["product", "manufacturer","product", "manufacturer"], function(val, index){ return index % 2; });
=> {1: ["product", "product"], 2: ["manufacturer", "manufacturer"]}