Rap*_*ael 1 javascript callback angularjs ecmascript-6
我只需要将包含iban值的对象分配给下面代码中的列表.我无法解决此问题.善意的帮助.
this.ibanList = this.data.map(
(value, index)=> (if(value && value.iban){'id': index, 'text': value.iban}));
Run Code Online (Sandbox Code Playgroud)
数据中存在的值如下所示.
"data": [
{
"id": "2c4cc5e8-d24d-11e4-8833-150bbf360367"
},
{
"iban": "DE45765459080",
"id": "2c4cc8ae-d24d-11e4-8833-150bbf360367"
},
{
"iban": "DE3700333333",
"id": "8a23995d-10d7-11e5-b819-2c44fd83fb24"
}
]
Run Code Online (Sandbox Code Playgroud)
两个问题:
箭头函数的简写形式必须只有一个表达式在右侧=>.你有一份if声明.(在括号中,即使在箭头函数之外也不会在任何地方有效.)
map始终使用返回值.您没有给"其他"案件提供任何返回值.
在这种特定情况下,您可以使用条件运算符; 我将null用作"else"案例的返回值:
this.ibanList = this.data.map(
(value, index)=> (value && value.iban ? {'id': index, 'text': value.iban} : null));
Run Code Online (Sandbox Code Playgroud)
var data = [
{"id": "2c4cc5e8-d24d-11e4-8833-150bbf360367"},
{"iban": "DE45765459080", "id": "2c4cc8ae-d24d-11e4-8833-150bbf360367"},
{"iban": "DE3700333333", "id": "8a23995d-10d7-11e5-b819-2c44fd83fb24"}
];
var ibanList = data.map(
(value, index)=> (value && value.iban ? {'id': index, 'text': value.iban} : null));
console.log(ibanList);Run Code Online (Sandbox Code Playgroud)
但请注意,结果将包含其中null的内容.如果你只想要那些value && value.iban是真的,那么filter在映射之前使用:
this.ibanList = this.data
.filter(value => value && value.iban)
.map((value, index) => ({'id': index, 'text': value.iban}));
Run Code Online (Sandbox Code Playgroud)
var data = [
{"id": "2c4cc5e8-d24d-11e4-8833-150bbf360367"},
{"iban": "DE45765459080", "id": "2c4cc8ae-d24d-11e4-8833-150bbf360367"},
{"iban": "DE3700333333", "id": "8a23995d-10d7-11e5-b819-2c44fd83fb24"}
];
var ibanList = data
.filter(value => value && value.iban)
.map((value, index) => ({'id': index, 'text': value.iban}));
console.log(ibanList);Run Code Online (Sandbox Code Playgroud)
在那种情况下,我filter 在映射之前使用过,这意味着index您使用的值id可能与原始值不同.如果你想要原始值,预过滤,你可以通过结合上面的两种方法进行过滤:
this.ibanList = this.data
.map((value, index)=> (value && value.iban ? {'id': index, 'text': value.iban} : null))
.filter(value => value); // Removes the nulls
Run Code Online (Sandbox Code Playgroud)
var data = [
{"id": "2c4cc5e8-d24d-11e4-8833-150bbf360367"},
{"iban": "DE45765459080", "id": "2c4cc8ae-d24d-11e4-8833-150bbf360367"},
{"iban": "DE3700333333", "id": "8a23995d-10d7-11e5-b819-2c44fd83fb24"}
];
var ibanList = data
.map((value, index)=> (value && value.iban ? {'id': index, 'text': value.iban} : null))
.filter(value => value); // Removes the nulls
console.log(ibanList);Run Code Online (Sandbox Code Playgroud)
你真的想用索引替换id值("2c4cc5e8-d24d-11e4-8833-150bbf360367"等)吗?如果没有,请id: index在上面替换id: value.id.