Вы не можете сделать это так recare[k]
, что означает, что вы устанавливаете ключ массива для объекта, который недопустим, вы можете использовать push
метод Array
для вставки данных или использовать i
из map
функция для push
на той же позиции, что и в оригинале array
var data = [
{type: "recare", value: "Hello" },
{type: "tocall", value: "World" },
{type: "recare", value: "People"}
];
var recare = [];
var toCall = [];
data.map(function(k,i) {
if (k.type == 'recare') {
recare.push(k);
} else if (k.type == 'tocall') {
toCall.push(k);
}
});
console.log("recare ---------");
console.log(recare);
console.log("toCall---------");
console.log(toCall);
У вас есть несколько других опций, которые вы можете использовать как forEach и filter * Цикл 1013 *
forEach
и for
хорошо подходит для массивов, в вашем использовании-case карта не для этого типа работы. Она выглядит так же, как forEach, но используется для в таких условиях, когда вы хотите манипулировать массивом и хотите вернуть тот же массив в результате с модификацией
Для того, как у вас есть Array
var sample = ["a","b","c","d"];
и вы хотите append
"z"
во всех index
sample = sample.map(val=>(val+"z"));
результат
["az","bz","cz","dz"]
фильтр будет лучшим выбором, которыйвернуть то, что вы ищете
var recare = data.filter(function(k){ return k.type == "recare" });