在这种情况下:我想用一个函数处理项目对象。项目对象具有属性“名称”,但这只是全名的简称。
我还得到了一个列表对象,该列表对象以项目的短名称作为属性,以全名作为这些属性的值。这是对象,就像您在节点控制台中尝试的那样:
var itemobj = {"name":"a","amount":"10","price":"5"};
var listobj = {"a":"adler","b":"blume","c":"chicken"};
不幸的是,并不是所有的项目对象都有一个属性,例如列表对象中的名称属性值。对于那些我想设置默认全名“ noname”的人。这是我认为应该起作用的代码:
function fullname(io){
if (listobj.hasOwnProperty(io.name)){
var shortn = io.name;
var fulln = listobj.shortn;
io.fullname = fulln;
} else {
io.fullname = "noname"
}
};
但是运行以下命令,我得到显示的输出:
fullname(itemobj);
console.log(itemobj);
{ name: 'a', amount: '10', price: '5', fullname: undefined }
我希望:
{ name: 'a', amount: '10', price: '5', fullname: 'adler' }
我该怎么办?
答案 0 :(得分:0)
鉴于listobj.hasOwnProperty(io.name)
可能返回true(因此listobj实际上具有该属性)的事实,您只需访问它,因为它是安全的。无需玩弄其他变量。
您的错误是short类型将具有值adler
,但是listobj.shortn
实际上访问shortn
中的listobj
命名字段,该字段不存在。您要使用其值,因此需要使用方括号。
检查下面的小提琴。
var itemobj = {"name":"a","amount":"10","price":"5"};
var listobj = {"a":"adler","b":"blume","c":"chicken"};
function fullname(io) {
console.log("Searching: " + io.name);
if (listobj.hasOwnProperty(io.name)) {
io.fullname = listobj[io.name];
} else {
io.fullname = "noname"
}
};
fullname(itemobj);
console.log(itemobj);
答案 1 :(得分:0)
listobj.shortn
应该是listobj[shortn]
。您要使用shortn
的 value 作为属性键。
var itemobj = {"name":"a","amount":"10","price":"5"};
var listobj = {"a":"adler","b":"blume","c":"chicken"};
function fullname(io){
if (listobj.hasOwnProperty(io.name)){
var shortn = io.name;
var fulln = listobj[shortn];
io.fullname = fulln;
} else {
io.fullname = "noname"
}
};
fullname(itemobj);
console.log(itemobj);
答案 2 :(得分:0)
由于%matplotlib widget
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
np.random.seed(0)
n = 100
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)
plt.figure()
colors = ['teal', 'yellowgreen', 'gold', 'red']
lw = 2
plt.scatter(X_train, y_train, color='navy', s=30, marker='o', label="training points")
for count, degree in enumerate([1, 3, 6, 9]):
model = make_pipeline(PolynomialFeatures(degree), Ridge())
model.fit(X_train[:, np.newaxis], y_train)
y_plot = model.predict(X_test[:, np.newaxis])
plt.plot(X_test[:, np.newaxis], y_plot, color=colors[count], linewidth=lw, #np.sort(X_test)[:, np.newaxis]
label="degree %d" % degree)
plt.legend(loc='lower right')
plt.show()
返回一个字符串,因此您可以通过bracket notation通过字符串访问JavaScript中的对象属性。将Alter table CUSTOMER_TRANS add(prefix generated always as (substr(longid,1,2)) virtual,
suffix generated always as (substr(longid,4)) virtual);
更改为io.name
后,您的程序应该可以正常工作。