我有以下代码:
var test1 = [
{
id: 1
},
{
id: 2
},
{
id: 3
},
];
var test2 = [
{
id: 3,
text: 'some other text 3'
},
{
id: 2,
text: 'some other text 2'
}
];
// filter method
function getNewArray(val) {
test2.filter(function(val2){
if(val.id == val2.id){
return (val2.text);
}
});
}
var data1 = test1.filter(getNewArray);
console.log(data1);
返回一个空数组
如果我删除" console.log(data1)"我修改代码如下:
function getNewArray(val) {
test2.filter(function(val2){
if(val.id == val2.id){
console.log(val2.text);
}
});
}
我得到了理想的结果。
为什么data1为空?
答案 0 :(得分:4)
您无法使用filter()
方法,而是可以使用reduce()
和forEach()
并返回数组作为结果。
var test1 = [{
id: 1,
text: 'some text'
}, {
id: 2,
text: 'some text 2'
}, {
id: 3,
text: 'some text 3'
}, ];
var test2 = [{
id: 3,
text: 'some other text 3'
}, {
id: 2,
text: 'some other text 2'
}];
function getNewArray(r, val) {
test2.forEach(function(val2) {
if (val.id == val2.id) {
r.push(val2.text);
}
});
return r;
}
var data1 = test1.reduce(getNewArray, []);
console.log(data1);