使用 rxjs 或本机 javascript 从 json 中提取特定键
Extract specific keys from json using rxjs or native javascript
假设您有一个 json 对象作为响应。例如
var items = [{
title: 'sample 1',
image: 'http://www.lorempixel.com/700/600/',
description: 'lorem ipsum'
}, {
title: 'sample 2',
image: 'http://www.lorempixel.com/900/1200/',
description: 'lorem ipsum'
}]
如何映射对象以便只有这样的结果对象:
[{
image: 'http://www.lorempixel.com/700/600/',
}, {
image: 'http://www.lorempixel.com/900/1200/',
}]
是否有使用 rxjs 运算符的简洁方法?或者只是 js 本机?
我尝试使用 :
const source = from(items);
const result = source.pipe(
pluck('image')
);
result.subscribe(val => console.log('new values ', val));
但它不起作用。有没有更干净的方法?
使用 vanilla JS 仅 map
对项目和 return 对象 属性:
var items = [{
title: 'sample 1',
image: 'http://www.lorempixel.com/700/600/',
description: 'lorem ipsum'
},{
title: 'sample 2',
image: 'http://www.lorempixel.com/900/1200/',
description: 'lorem ipsum'
}];
const out = items.map(({image}) => ({ image }));
console.log(out);
使用 Rxjs 6+
它在 rxjs 中工作,就像在 Vanilla js 中一样。这是来自 www.learnrxjs.io 的示例:
// RxJS v6+
import { from } from 'rxjs';
import { map } from 'rxjs/operators';
//emit ({name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50})
const source = from([
{ name: 'Joe', age: 30 },
{ name: 'Frank', age: 20 },
{ name: 'Ryan', age: 50 }
]);
//grab each persons name, could also use pluck for this scenario
const example = source.pipe(map(({ name }) => name));
//output: "Joe","Frank","Ryan"
const subscribe = example.subscribe(val => console.log(val));
假设您有一个 json 对象作为响应。例如
var items = [{
title: 'sample 1',
image: 'http://www.lorempixel.com/700/600/',
description: 'lorem ipsum'
}, {
title: 'sample 2',
image: 'http://www.lorempixel.com/900/1200/',
description: 'lorem ipsum'
}]
如何映射对象以便只有这样的结果对象:
[{
image: 'http://www.lorempixel.com/700/600/',
}, {
image: 'http://www.lorempixel.com/900/1200/',
}]
是否有使用 rxjs 运算符的简洁方法?或者只是 js 本机?
我尝试使用 :
const source = from(items);
const result = source.pipe(
pluck('image')
);
result.subscribe(val => console.log('new values ', val));
但它不起作用。有没有更干净的方法?
使用 vanilla JS 仅 map
对项目和 return 对象 属性:
var items = [{
title: 'sample 1',
image: 'http://www.lorempixel.com/700/600/',
description: 'lorem ipsum'
},{
title: 'sample 2',
image: 'http://www.lorempixel.com/900/1200/',
description: 'lorem ipsum'
}];
const out = items.map(({image}) => ({ image }));
console.log(out);
使用 Rxjs 6+
它在 rxjs 中工作,就像在 Vanilla js 中一样。这是来自 www.learnrxjs.io 的示例:
// RxJS v6+
import { from } from 'rxjs';
import { map } from 'rxjs/operators';
//emit ({name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50})
const source = from([
{ name: 'Joe', age: 30 },
{ name: 'Frank', age: 20 },
{ name: 'Ryan', age: 50 }
]);
//grab each persons name, could also use pluck for this scenario
const example = source.pipe(map(({ name }) => name));
//output: "Joe","Frank","Ryan"
const subscribe = example.subscribe(val => console.log(val));