我正在使用node-csvtojson
将csv fils解析为json,并且得到了带有以下代码的JSONarray
csv({delimiter: ';'}).fromFile(path).then((jsonObj)=>{
data = jsonObj;
console.log(jsonObj);
})
带有
之类的csva,b,c
A,B,C
1,2,3
1,B,C
我有
[
{
a: A,
b: B,
c: C,
},
{
a: 1,
b: 2,
c: 3,
},
{
a: 1,
b: B,
c: C
}
]
但是我想找到每个具有元素a === 1
的对象,并且想要拥有该对象的所有内容,
像这样:
{
a: 1,
b: 2,
c: 3,
},
{
a: 1,
b: B,
c: C,
}
但是我很难做到这一点,我尝试使用array.filter
,但没有成功,然后尝试尝试使用array.map
,但是我迷失了如何做。
您有什么想法吗,或者我可以做到吗?
谢谢
答案 0 :(得分:4)
像这样使用Array.filter
:
const data = [{
a: 'A',
b: 'B',
c: 'C',
},
{
a: 1,
b: 2,
c: 3,
},
{
a: 1,
b: 'B',
c: 'C'
}
];
console.log(data.filter(({ a }) => a == 1));
如果您希望它与旧的浏览器一起使用,请使用ES5兼容版本:
var data = [{
a: 'A',
b: 'B',
c: 'C',
},
{
a: 1,
b: 2,
c: 3,
},
{
a: 1,
b: 'B',
c: 'C'
}
];
console.log(data.filter(function(obj) {
return obj.a == 1
}));
答案 1 :(得分:3)
只需使用 Array.filter
即可过滤对象数组并选择一个具有属性a === 1
var arr = [{"a":"A","b":"B","c":"C"},{"a":1,"b":2,"c":3},{"a":1,"b":"B","c":"C"}];
const filteredArr = arr.filter(obj => obj.a === 1);
console.log(filteredArr);
使用 Array.reduce
,您可以执行相同的操作:
var arr = [{"a":"A","b":"B","c":"C"},{"a":1,"b":2,"c":3},{"a":1,"b":"B","c":"C"}];
const redArr = arr.reduce((acc, obj) => {
return acc = obj.a === 1 ? acc.concat(obj) : acc;
}, []);
console.log(redArr);
使用 Array.map
来解决此问题不是正确的方法,尽管可能的是:
var arr = [{"a":"A","b":"B","c":"C"},{"a":1,"b":2,"c":3},{"a":1,"b":"B","c":"C"}];
const mapArr = arr.map(obj => obj.a === 1 ? obj : undefined).filter(obj => obj); //hack to remove undefined elements
console.log(mapArr);
答案 2 :(得分:1)
console.log([{
a: 'A',
b: 'B',
c: 'C',
},
{
a: 1,
b: 2,
c: 3,
},
{
a: 1,
b: 'B',
c: 'C'
}
].filter(o => o.a === 1))
答案 3 :(得分:1)
尝试一下:
implementation 'com.google.android.material:material:1.0.0'