Javascript 替代过滤器
我正在映射是否已找到状态。该功能似乎工作正常,但是否有较短的方法或替代方法 例如:Javascript 替代过滤器,javascript,Javascript,我正在映射是否已找到状态。该功能似乎工作正常,但是否有较短的方法或替代方法 例如: data = { Items: [ {Id: 434, Status: "Processing"}, {Id: 223, Status: "Completed"} ] } mapperData = { Id: 223, Name: "Hello World", Status: data.Items.filter(function(item) { if (item
data = {
Items: [
{Id: 434, Status: "Processing"},
{Id: 223, Status: "Completed"}
]
}
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.filter(function(item) {
if (item.Id == 223) {
return item.Status
}
})[0].Status,
}
console.log(mapperData)
返回:
{Id:223,姓名:“你好,世界”,状态:“已完成”}
演示:而不是[0]
,使用:
例如:
使用ES2015+箭头功能更好:
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.find(item => item.Id == 223).Status,
}
find
是在ES2015中添加的,但是对于像IE11这样的过时环境,可以很容易地进行多填充。而不是使用[0]
,使用:
例如:
使用ES2015+箭头功能更好:
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.find(item => item.Id == 223).Status,
}
find
是在ES2015中添加的,但是对于像IE11这样的过时环境,可以很容易地进行多填充。您可以选择在项
数组上使用forEach
循环,并设置您的id
以在变量中进行比较:
var数据={
项目:[
{Id:434,状态:“正在处理”},
{Id:223,状态:“已完成”}
]
}
var res={};
var-id=223;
data.Items.forEach((item)=>{
res.Id=Id;
res.Name=“你好,世界”;
如果(item.Id==Id){
资源状态=项目状态
}
});
console.log(res)
您可以选择在项
数组上使用forEach
循环,并将id设置为在变量中进行比较:
var数据={
项目:[
{Id:434,状态:“正在处理”},
{Id:223,状态:“已完成”}
]
}
var res={};
var-id=223;
data.Items.forEach((item)=>{
res.Id=Id;
res.Name=“你好,世界”;
如果(item.Id==Id){
资源状态=项目状态
}
});
console.log(res)
Crowder,添加一个未定义的检查是否明智?@callback:问题中没有,因此我假设没有必要这样做——例如,作者知道数组将包含一个具有Id
的项。此外,您几乎总是希望使用==
操作符而不是=
@BoltKey:No,这几乎不重要。在绝大多数情况下,这是风格问题,而不是实质问题。我复制了OP的样式。Crowder,添加一个未定义的检查是否明智?@callback:问题中没有,因此我假设没有必要这样做——例如,作者知道数组将包含一个具有Id
的项。此外,您几乎总是希望使用===
运算符,而不是=
@BoltKey:No,这几乎不重要。在绝大多数情况下,这是风格问题,而不是实质问题。我复制了OP的风格。为了便于将来参考,您可以使用现场堆栈片段(即[]
工具栏按钮;)而不是场外小提琴,让人们更容易帮助您(并帮助您避免遗漏重要细节)。为了将来参考,您可以使用场外小提琴,通过使用现场堆栈片段([]
工具栏按钮;),您可以让人们更容易地帮助您(并帮助自己避免遗漏重要的细节)。
mapperData = {
Id: 223,
Name: "Hello World",
Status: data.Items.find(item => item.Id == 223).Status,
}