Javascript JSON对象和字符串函数

Javascript JSON对象和字符串函数,javascript,json,Javascript,Json,我正在尝试对JSON属性值调用startsWith()字符串函数: {“消息”:“xyzabc”} 但我得到了一个错误: 对象xyzabc没有方法“StartWith” 我该怎么做 代码在服务器端运行,在Node.js上运行Express显然,js已经启动了字符串函数。但是,使用自己的函数查看字符串是否以值开头不会导致错误 function StartsWith(s1, s2) { return (s1.length >= s2.length && s1.su

我正在尝试对JSON属性值调用startsWith()字符串函数:

{“消息”:“xyzabc”}

但我得到了一个错误:

对象xyzabc没有方法“StartWith”

我该怎么做


代码在服务器端运行,在Node.js上运行Express

显然,js已经启动了字符串函数。但是,使用自己的函数查看字符串是否以值开头不会导致错误

 function StartsWith(s1, s2) {
      return (s1.length >= s2.length && s1.substr(0, s2.length) == s2);
    }
    var jsonResponse = JSON.parse(httpResponse.text);
   var stringMessage = jsonResponse.message.toString();
   if(StartsWith(stringMessage,'xyz')) {
      //Doing Stuff!
    }

显然,Js为字符串提供了startsWith函数。但是,使用自己的函数查看字符串是否以值开头不会导致错误

 function StartsWith(s1, s2) {
      return (s1.length >= s2.length && s1.substr(0, s2.length) == s2);
    }
    var jsonResponse = JSON.parse(httpResponse.text);
   var stringMessage = jsonResponse.message.toString();
   if(StartsWith(stringMessage,'xyz')) {
      //Doing Stuff!
    }

您的浏览器可能不支持
startsWith()
函数,因此您可以使用
RegExp
来解决此问题

var jsonObject={message:"xyzHELLO"};
var regex=new RegExp("^xyz");
if(regex.test(jsonObject["message"])){
alert("hello");
}

[编辑]

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        if (this.toString().indexOf(searching) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}
如果要在每个
字符串中添加函数
startsWith()
,可以这样添加

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        var regex = new RegExp("^" + searching);
        if (regex.test(this.toString())) {
            return true;
        }
        else {
            return false;
        }
    }
}
然后你可以这样使用:

var jsonObject = { message: "xyzHELLO" };
if (jsonObject["message"].toString().startsWith("xyz")) {
    alert("start with");
}
else {
    alert("not start with");
}
[编辑]

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        if (this.toString().indexOf(searching) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

根据@nnnnnn的评论,我也认为如果我们使用
JavaScript
的本机函数是一个很好的实践,谢谢@nnnn

您的浏览器可能不支持
startsWith()
功能,因此您可以使用
RegExp
来解决这样的问题

var jsonObject={message:"xyzHELLO"};
var regex=new RegExp("^xyz");
if(regex.test(jsonObject["message"])){
alert("hello");
}

[编辑]

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        if (this.toString().indexOf(searching) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}
如果要在每个
字符串中添加函数
startsWith()
,可以这样添加

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        var regex = new RegExp("^" + searching);
        if (regex.test(this.toString())) {
            return true;
        }
        else {
            return false;
        }
    }
}
然后你可以这样使用:

var jsonObject = { message: "xyzHELLO" };
if (jsonObject["message"].toString().startsWith("xyz")) {
    alert("start with");
}
else {
    alert("not start with");
}
[编辑]

if (String.prototype.startsWith !== "function") {
    String.prototype.startsWith = function (searching) {
        if (this.toString().indexOf(searching) == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

根据@nnnnnn的评论,我也认为如果我们使用
JavaScript
的本机函数是一个很好的实践,谢谢@nnnn

请仔细检查您的输入。在
httpResponse.text
中输入正确的JSON,代码就像一个魔咒

var json = '{"message": "xyztest"}';
var jsonResponse = JSON.parse(json);
var stringMessage = jsonResponse.message.toString();

if(stringMessage.startsWith('xyz')) {
    alert('It works!');
}
另外,请确保您使用的浏览器支持
startsWith
方法。您可以找到包含所有受支持浏览器的列表

如果需要解决浏览器兼容性问题,可以使用广泛支持的
indexOf
方法

if(stringMessage.indexOf('xyz') === 0) {
    alert('It works!');
}

对于这两种情况。

请仔细检查您的输入。在
httpResponse.text
中输入正确的JSON,代码就像一个魔咒

var json = '{"message": "xyztest"}';
var jsonResponse = JSON.parse(json);
var stringMessage = jsonResponse.message.toString();

if(stringMessage.startsWith('xyz')) {
    alert('It works!');
}
另外,请确保您使用的浏览器支持
startsWith
方法。您可以找到包含所有受支持浏览器的列表

如果需要解决浏览器兼容性问题,可以使用广泛支持的
indexOf
方法

if(stringMessage.indexOf('xyz') === 0) {
    alert('It works!');
}


对于这两种情况。

您可以发布示例JSON响应文本吗?您的
jsonResponse
中的
.message
是什么?当你甚至不知道它是什么样子的时候,很难想出为什么它不起作用!发布您的JSON格式。您在哪个浏览器中进行测试?您使用的浏览器是否支持
.startsWith()
?另外,您没有对JSON属性值进行操作,而是对对象属性值调用了
.toString()
,并对结果使用了
.startsWith()
。您可以发布示例JSON响应文本吗?您的
jsonResponse
中的
.message
是什么?当你甚至不知道它是什么样子的时候,很难想出为什么它不起作用!发布您的JSON格式。您在哪个浏览器中进行测试?您使用的浏览器是否支持
.startsWith()
?另外,您没有对JSON属性值进行操作,而是对对象属性值调用了
.toString()
,并对结果使用了
.startsWith()
。“JS没有本机startsWith”-嗯。。。。(但IE不支持它。)@nnnnnn我找不到它。阅读更多关于使用字符串@nnnnnn的内容,我明白了。感谢您的见解。您的解决方案运行良好,我用regex将另一个解决方案标记为仅第一次(1分钟差异)。谢谢。@GPack呵呵,你选择了一门大炮来杀死一只苍蝇:)。谢谢你的投票。“JS没有本地startsWith”-嗯。。。。(但IE不支持它。)@nnnnnn我找不到它。阅读更多关于使用字符串@nnnnnn的内容,我明白了。感谢您的见解。您的解决方案运行良好,我用regex将另一个解决方案标记为仅第一次(1分钟差异)。谢谢。@GPack呵呵,你选择了一门大炮来杀死一只苍蝇:)。感谢您的支持。代码正在服务器端运行,请在Node.js上快速显示当您发布
问题时,您没有描述它。您的解决方案运行良好,谢谢。我也将使用自己的编码函数startsWith()尝试另一种解决方案。欢迎。如果您想像使用
yourString.startsWith()
函数那样使用此代码,则还可以在
String
classis中添加该函数如果您正在编写通用的startsWith(),则使用.indexOf()对函数进行编码会更安全,因为这样,您就不必担心在构建正则表达式时需要转义测试字符串。代码在服务器端运行,请在Node.js上表达当您发布
问题时,您没有描述它。您的解决方案运行良好,谢谢。我也将使用自己的编码函数startsWith()尝试另一种解决方案。欢迎。如果您想像使用
yourString.startsWith()
函数那样使用此代码,则还可以在
String
classis中添加该函数如果您正在编写通用的startsWith(),则使用.indexOf()对函数进行编码会更安全,因为这样您就不必担心在构建正则表达式时需要转义测试字符串了。代码运行在服务器端,节点上的Express。JS这是新的,没有包含在您最初的问题中。代码应该可以正常工作。代码在服务器端运行,在节点上运行。jsp这是新的,没有包含在原始问题中。不管怎样,代码应该可以工作。