javascript,节点,从其他对象属性生成对象属性或默认

时间:2018-09-18 18:08:58

标签: javascript node.js object

在这种情况下:我想用一个函数处理项目对象。项目对象具有属性“名称”,但这只是全名的简称。

我还得到了一个列表对象,该列表对象以项目的短名称作为属性,以全名作为这些属性的值。这是对象,就像您在节点控制台中尝试的那样:

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' }

我该怎么办?

3 个答案:

答案 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后,您的程序应该可以正常工作。