在javascript中使用some方法

在javascript中使用some方法,javascript,Javascript,我有两个数组,initialArray和testArrayinitialArray由8个数组组成,每个数组都有一个元素(一个对象),testArray由8个元素组成(每个元素都是一个对象)。 当满足条件时,我想弹出并将testArray中的每个元素推送到initialArray中的一个数组中,这样我就得到了一个空的testArray,initialArray[0]..[7]元素 var initialArray = [ [{optiona:'some string',optionb: '

我有两个数组,
initialArray
testArray
initialArray
由8个数组组成,每个数组都有一个元素(一个对象),
testArray
由8个元素组成(每个元素都是一个对象)。 当满足条件时,我想弹出并将
testArray
中的每个元素推送到
initialArray
中的一个数组中,这样我就得到了一个空的
testArray
initialArray[0]..[7]
元素

var initialArray = [
    [{optiona:'some string',optionb: 'some string'}],
    [/*...*/],
];
var testArray = [
    {optiona:'some other string',optionb: 'some other string'},
    {/*...*/}
];
最后的
initialArray
应该如下所示

[
    [
        {optiona:'some string',optionb: 'some string'},
        {optiona:'some other string',optionb: 'some other string'}
    ],
    [
        {..},
        {..}
    ],
    // ,,,
]
到目前为止,我的代码是:

var mySomeFunction = function(element, index, array) {
    // test if elements are not equal to (element.optiona != option1 && element.optionb != option2);
    //return the element
}

initialArray.forEach(function(item) { 
    //get the conditionals for the current element
    var option1 = item[0].optiona
    var option2 = item[0].optionb

    item.some(mySomeFunction)
    // item.push(element returned from mySomeFunction)
});  

我不知道如何正确使用
。有些
方法,我需要传递与当前元素相关的值
option1
option2
,例如
initialArray[0][0]
,选择一个值与
option1
option2
的值不匹配的元素,例如
testArray[3]
,弹出元素并将其推到
initialArray
中的当前数组中,例如
initialArray[0][0]
现在包含元素
testArray[3]

我认为
一些
在这里没有多大帮助。它将返回
true
false
,因此它不会告诉您哪个元素符合条件

您可以使用普通循环:

initialArray.forEach(function(item) { 
    //get the conditionals for the current element
    var option1 = item[0].optiona
    var option2 = item[0].optionb

    for(var i = 0, len = testArray; i < len; i++) {
        if(testArray[i].optiona !== option1 && testArray[i].optionb !== option2) {
            item.push(testArray[i]);
            testArray.splice(i, 1); // remove element from array
            break;
        }
    }
}); 
initialArray.forEach(函数(项){
//获取当前元素的条件
var option1=项目[0]。optiona
var option2=项目[0]。optionb
对于(变量i=0,len=testArray;i

请注意,
forEach
是ECMAScript 5的一部分,在较旧的浏览器中不可用。

有什么方法可以简化您的示例?这有点难理解(至少对我来说)。没有JSON对象…{optiona:'some string',optionb:'some string'}“不是JSON吗?@raphael_turtle:不是。这是编程语言Javascript中的对象文字。JSON是一种基于文本的格式,看起来几乎相同,并以这种语法命名;在像Javascript这样的语言中,如果您有JSON,它将在字符串中找到。