我正在尝试从对象中提取一些值并将它们放入数组中。到目前为止,我有这个:
let obj = {
a: 'a',
b: 'b',
c: 'c',
d: 'd',
e: 'e'
};
let arr = [{a, b, c} = obj];
console.log(arr);
但是,这将返回一个只有一个对象的数组:
[{a:'a',b:'b',c:'c',d:'d',e:'e'}]
我想要的输出是:
['a', 'b', 'c']
有人知道我在做什么错吗?
答案 0 :(得分:2)
您可以使用short hand properties获取新对象的值。
import time
from bs4 import BeautifulSoup
from selenium import webdriver
link = "https://www.flipkart.com/poco-f1-graphite-black-64-gb/product-reviews/itmf8fyjyssnt25c?page={}&pid=MOBF85V7A6PXETAX"
driver = webdriver.Chrome() #If necessary, define the chrome path explicitly
for page_num in range(1,5):
driver.get(link.format(page_num))
[item.click() for item in driver.find_elements_by_class_name("_1EPkIx")]
time.sleep(1)
soup = BeautifulSoup(driver.page_source, 'lxml')
for items in soup.select("._3DCdKt"):
title = items.select_one("p._2xg6Ul").text
review = ' '.join(items.select_one(".qwjRop div:nth-of-type(2)").text.split())
print(f'{title}\n{review}\n')
driver.quit()
或者将所需的键用于新阵列。
let obj = { a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' },
{ a, b, c } = obj,
arr = Object.values({ a, b, c });
console.log(arr);
答案 1 :(得分:1)
要实现以下选项的预期用途
在赋值语句周围使用(),因为{}在解构赋值期间被视为块而不是对象文字
let obj = {
a: 'a',
b: 'b',
c: 'c',
d: 'd',
e: 'e'
};
//({a, b, c, ...rest} = obj) // to have access of rest of parameters
({a, b, c} = obj)
let arr = [a,b,c];
console.log(arr);
答案 2 :(得分:0)
您可以使用comma operator进行内联:
let obj = {
a: 'a',
b: 'b',
c: 'c',
d: 'd',
e: 'e'
};
let arr = ({a, b, c} = obj, [a, b, c]);
console.log(arr);