У меня есть два объекта:
var arr= [
0: { selectedAns: "test answer 1", id: "28", status: "answered" }
]
а также:
var answerList = [
0: { selectedAns: "test answer 2 ques 5", id: "27", status: "answered" },
1: { selectedAns: "test answer 3 ques 6", id: "29", status: "answered"}
]
Когда я это делаю:
arr1.push(arr);
arr1.push(answerList);
Я получаю этот результат:
var arr1=[0:{
0:{selectedAns: "test answer 2 ques 5", id: "27", status: "answered"}
}
1:{
0:{selectedAns: "test answer 1", id: "28", status: "answered"}
1:{selectedAns: "test answer 3 ques 6", id: "29", status: "answered"}
}]
Но я хочу что-то вроде этого:
var arr1=[
0:{selectedAns: "test answer 2 ques 5", id: "27", status: "answered"}
1:{selectedAns: "test answer 1", id: "28", status: "answered"}
2:{selectedAns: "test answer 3 ques 6", id: "29", status: "answered"}
]
Что я делаю неправильно? Благодарю.
Примечание. Я удаляю дубликаты из объектов перед слиянием двух объектов, даже если любой ключ имеет дублирующее значение, как здесь, в ключе состояния. Тем не менее, мне нужно объединить оба объекта. По моему требованию только ключ id должен быть уникальным, поэтому мне нужен способ объединить два объекта, как указано выше.
Вы можете использовать Array#concat
, для которого требуется назначение нового массива.
var arr = [{ selectedAns: "test answer 1", id: "28", status: "answered" }],
answerList = [{ selectedAns: "test answer 2 ques 5", id: "27", status: "answered" }, { selectedAns: "test answer 3 ques 6", id: "29", status: "answered" }];
arr = arr.concat(answerList);
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Или используйте Array#push
с Function#apply
для принятия массива в качестве параметра.
var arr = [{ selectedAns: "test answer 1", id: "28", status: "answered" }],
answerList = [{ selectedAns: "test answer 2 ques 5", id: "27", status: "answered" }, { selectedAns: "test answer 3 ques 6", id: "29", status: "answered" }];
Array.prototype.push.apply(arr, answerList);
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }
С ES6 вы можете нажать значения с синтаксисом распространения ...
который принимает массив как параметры.
var arr = [{ selectedAns: "test answer 1", id: "28", status: "answered" }],
answerList = [{ selectedAns: "test answer 2 ques 5", id: "27", status: "answered" }, { selectedAns: "test answer 3 ques 6", id: "29", status: "answered" }];
arr.push(...answerList);
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }
{0:.....,1:......,2:.....}
Ну Использование JavaScript вы можете нажать answerList
массив в arr1
, используя для циклы увидеть эту функцию:
var arr1 = [];
var arr={0:{selectedAns: "test answer 1", id: "28", status: "answered"}};
var answerList={0:{selectedAns: "test answer 2 ques 5", id: "27", status: "answered"},1:{selectedAns: "test answer 3 ques 6", id: "29", status: "answered"}};
arr1.push(arr);//push first array
pashingarray(answerList);
//function to push an array
function pashingarray(arrtobepush)
{
var lenghtar = 0;
for(var key in arrtobepush) {
if(arrtobepush.hasOwnProperty(key)){
lenghtar++;//get the lenght of the array
}
}
for(var i = 0;i<lenghtar;i++)//loop the array to push the content
{
var keytopush = i+1;
var arraytopush = {[keytopush]:arrtobepush[i]};
arr1.push(arraytopush);
}
}
console.log(arr1);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0:
1:
т.д. ... ни один из этих синтаксисов не является допустимым. Массив объектов выглядит как[{},{},{}]
arr
иanswerList
. Затем вы пытаетесь обратиться к тому, что называетсяarr1
. Что это такое?