为什么不';当我循环通过一个对象时,我的数组是否应该更新?Javascript
我试图查看一个对象数组,给定一个特定对象的type属性,将该对象保存在一个数组中 如果我有:为什么不';当我循环通过一个对象时,我的数组是否应该更新?Javascript,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,我试图查看一个对象数组,给定一个特定对象的type属性,将该对象保存在一个数组中 如果我有: data = [ {type: "recare", value: "Hello", ... }, {type: "tocall", value: "World", ... }, {type: "recare", value: "People", ...} ]; 这是我的代码: var recare=[]; var-toCall=[]; 数据映射(函数(k){ console.log(k.r
data = [
{type: "recare", value: "Hello", ... },
{type: "tocall", value: "World", ... },
{type: "recare", value: "People", ...}
];
这是我的代码:
var recare=[];
var-toCall=[];
数据映射(函数(k){
console.log(k.reason)
如果(k.type=='recare'){
重铸[k]=k
console.log(“recare”,recare)
}else if(k.type==“tocall”){
toCall[k]=k
日志(“tocall”,tocall)
}
});
我不知道为什么,但对象没有正确保存。由于有多个
recare
数组中应该有两个条目,但只有最后一个条目显示,我有什么做得不正确?您不能这样做recare[k]
,这意味着您正在将数组键设置为无效的对象,您可以使用push
方法Array
插入数据,也可以使用map
功能i
在原始Array
的相同位置上进行push
var数据=[
{type:“recare”,value:“Hello”},
{类型:“tocall”,值:“World”},
{type:“recare”,value:“People”}
];
var recare=[];
var-toCall=[];
数据映射(函数(k,i){
如果(k.type=='recare'){
重铸推力(k);
}else if(k.type==“tocall”){
toCall.push(k);
}
});
控制台.log(“recare------------------”);
控制台日志(recare);
console.log(“toCall-----”);
控制台日志(toCall)代码>更改recare[k]=k
为recare.push(k)
k
是一个对象,因此不能将其用作索引。可以将值(e
)传递给的回调函数。然后检查e.type
是否等于recare
或tocall
以及正确数组的值
以下是工作代码:
const数据=[
{type:“recare”,value:“Hello”},
{类型:“tocall”,值:“World”},
{type:“recare”,value:“People”}
]
让recare=[];
让toCall=[];
data.map(e=>{
如果(e.type=='recare'){
重铸推力(e值)
}else if(e.type==“tocall”){
toCall.push(即值)
}
});
console.log(recare)
console.log(toCall)
if(k.type=='recare'){
重铸推力(k);
console.log(“recare”,recare)
}
这将使您的对象在最后被推入数组,为您提供数组上的数字索引,我相信这是您的意图 传递给映射回调的第一个参数是元素而不是其索引。
传递给map的参数的顺序如下:数据元素,索引,数组
而且您的元素是一个对象而不是整数,所以它不能用作索引。
您可以使用push方法在所需数组的末尾插入元素
data.map(function(k){
if (k.type =='recare') {
recare.push(k)
} else if(k.type == 'tocall'){
toCall.push(k)
} });
你到底想达到什么目的?请说得具体一点。.map()
返回一个新数组,用于转换数组中的每个元素。如果您只想迭代数组的元素,请使用.forEach()
。您也可以使用.filter()
。虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。这不是的用例。@Andreas是的,我知道!